キャンセル トークンが与えられたら、そこから待機可能なタスクを作成したいと思います。このタスクは決して完了しませんが、キャンセルすることができます。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);
}
このロジックを実現するためのより良い方法はありますか?