Почему не отменяется задача?
От: Passerby  
Дата: 15.03.21 18:15
Оценка:
Если с сервера долго не приходят данные нужно подать сигнал.
Имитировал сервер циклом, если данные приходят (новый цикл), то должен отменяться оператор
Console.WriteLine("Обработка закончена " + DateTime.Now);

Почему отмены нет?
static async Task Main(string[] args)
    {
      CancellationTokenSource cts = new CancellationTokenSource();
      Task task = null;
      for(int i=0; ;i++)
      {
        if (i != 0)
        {
         cts.Cancel();
         Thread.Sleep(10);
         task.Dispose();
        }
        cts = new();
        task = SignalNoServer(cts.Token);        
      }
}
static async Task SignalNoServer(CancellationToken ct)
    {
      var v = Task.Delay(2000, ct);
      v.Wait(ct);
      if (!v.IsCanceled) Console.WriteLine("Обработка закончена " + DateTime.Now);
//или другой вариант, в котором тоже нет отмены
//if (!ct.IsCancellationRequested) Console.WriteLine("Обработка закончена " + DateTime.Now);
      v.Dispose();
    }
Отредактировано 15.03.2021 20:52 Passerby . Предыдущая версия . Еще …
Отредактировано 15.03.2021 20:36 Passerby . Предыдущая версия .
Отредактировано 15.03.2021 20:36 Passerby . Предыдущая версия .
Отредактировано 15.03.2021 20:35 Passerby . Предыдущая версия .
Отредактировано 15.03.2021 20:33 Passerby . Предыдущая версия .
Отредактировано 15.03.2021 18:19 Passerby . Предыдущая версия .
Отредактировано 15.03.2021 18:18 Passerby . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.