Я немного запутался со всем этим.Мне нужно создать пожизненный метод внутри моего приложения, который будет связываться с веб-сервисом asp net, и он вернет мне некоторые результаты.Пока мое приложение работает, этот метод никогда не остановится.
Метод-1, создающий задачу.
t=Task.Run(()=>ffAsync());
async void ffAsync()
{
while (true)
{
await Task.Delay(5000);
Console.WriteLine("Reading from server every 5 seconds");
}
}
Метод2 с использованием фонового рабочего
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();
}
Метод-3 Использование темы
new Thread(() =>
{
Thread.CurrentThread.IsBackground = true;
while(true)
{
Thread.Sleep(5000);
Console.WriteLine("Run every 5 seconds");
}
}).Start();
Какой метод более эффективен в моем случае?Также еще один вопрос оптимизации, лучше ли использовать task.delay (x), Thread.Sleep (x) для запуска моего цикла каждые x секунд или создания таймера (как мой пример секунд), который будет запускать мое событие каждые xсекунд?