/// <summary> /// キャンセル伝搬しつつ、タイムアウト時にキャンセルするctsを作る。 /// </summary> public static CancellationTokenSource CancelAfter(this CancellationToken ct, TimeSpan timeout) { var cts = ct.ToCancellationTokenSourceOneWay(); DelayTimer(timeout, () => cts.Cancel(new TimeoutException())); return(cts); }
public static Task <T> First <T>(CancellationToken ct, params Task <T>[] tasks) { var cts = ct.ToCancellationTokenSourceOneWay(); return(First(cts, tasks)); }