Учитывая токен отмены, я хотел бы создать из него ожидаемую задачу, которая никогда не будет полной, но может быть отменена. Мне нужно это для такого шаблона, который IMO должен быть довольно распространенным:
async Task DoStuff(Task t, CancellationToken ct)
{
// t was made from TaskCompletionSource,
// both t and ct are beyond my control
Task t2 = TaskFromCancellationToken(ct);
await Task.WhenAny(t, t2);
// do stuff
}
Лучшая идея, которую я получил до сих пор:
Task TaskFromCancelationToken(CancellationToken ct)
{
return Task.Delay(Timeout.Infinite, ct);
}
Есть ли лучший способ сделать эту логику?