У меня есть несколько задач, которые я хочу выполнять в течение очень длительного периода времени. Я хочу запустить задачи, а затем проверить в al oop, все ли они еще выполняются, и перезапустить задачу, если одна из них будет отменена или остановлена иным образом. Код, который я имею, не обнаруживает, что задачи запускаются, и перезапускает их снова и снова. Может кто-нибудь помочь мне, пожалуйста? Или есть лучший способ сделать то, что я хочу? Спасибо.
public async Task TaskBx(CancellationToken ct)
{
while (true)
{
//Do stuff
await Task.Delay(500);
}
}
public async Task TaskAx(CancellationToken ct)
{
while (true)
{
//Do stuff
await Task.Delay(500);
}
}
private async Task StartTrade(CancellationToken ct)
{
Task TA = Task.Factory.StartNew(() => TaskAx(ct));
Task TB = Task.Factory.StartNew(() => TaskBx(ct));
while (true)
{
if ((TA != null) && (TA.IsCompleted == true)) { _ = Task.Factory.StartNew(() => TaskAx(ct)); Console.WriteLine("Start TaskA"); } else { Console.WriteLine("Started A"); }
if ((TB != null) && (TB.IsCompleted == true)) { _ = Task.Factory.StartNew(() => TaskBx(ct)); Console.WriteLine("Start TaskB"); } else { Console.WriteLine("Started B"); }
await Task.Delay(50);
}
}