title: Task vs Thread vs background worker for a lifetime method
body: <p>I'm little confused with all of this. I need to create a lifetime  method inside my application which it will Communicate with an asp net web service and it will returns me some results. As long my application is running, this method will never stop.</p>
  
  <h3>Method-1 creating an Task.</h3>
  
  <pre><code> t=Task.Run(()=&gt;ffAsync());
  
   async void ffAsync()
   {
      while (true)
      {
        await Task.Delay(5000);
        Console.WriteLine("Reading from server every 5 seconds");
      }
   }
  </code></pre>
  
  <h3>Method2 using background worker</h3>
  
  <pre><code>Timer t = new Timer();   
  t.Interval = 5000;    
  timer1.Enabled = true;  
  timer1.Tick += new 
  System.EventHandler(OnTimerEvent);
  
  private void OnTimerEvent(object sender, EventArgs e) 
  {
   backgroundWorker1.RunWorkerAsync();
  }
  </code></pre>
  
  <p>Method-3 using Thread</p>
  
  <pre><code>new Thread(() =&gt;
  {
     Thread.CurrentThread.IsBackground = true;
     while(true)
     {
        Thread.Sleep(5000);
        Console.WriteLine("Run every 5 seconds");
     }
   }).Start();
  </code></pre>
  
  <p>Which method is more effective in my case?
  Also another optimization question, is it better to use a task.delay(x),Thread.Sleep(x) for running  my loop every x seconds, or creating a timer (as my seconds example) which it will trigger my event every x seconds?</p>