Если с сервера долго не приходят данные нужно подать сигнал.
Имитировал сервер циклом, если данные приходят (новый цикл), то должен отменяться оператор
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();
}