给定一个取消令牌,我想从中创建一个可等待的任务,该任务永远不会完成,但可以取消。我需要这样的模式,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);
}
有没有更好的方法来实现这个逻辑?