Отмена в TaskCompletionSource
Есть метод Load(), в который я передаю время timerA и время timerB.
Когда время timerB больше timerA, программа выходит из метода и продолжает работать дальше.
Но у меня есть проблема: когда timerB заканчивается, то программа возвращается в метод. Как сделать, чтобы при выходе из метода программа не возвращалась?
Та же проблема возникает, если timerB меньше timerA.
public Task<bool> Load(int timerA, int timerB)
{
CancellationTokenSource ct = new CancellationTokenSource(TimeSpan.FromSeconds(timerA));
TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>(ct);
ct.Token.Register(() =>
{
Console.WriteLine("TrySetCanceled");
tcs.TrySetCanceled();
});
Task.Run(() =>
{
Task.Delay(TimeSpan.FromSeconds(timerB)).Wait();
Console.WriteLine("SetResult");
tcs.SetResult(true);
});
return tcs.Task;
}
Load(6,10).Wait();
Load(6,10).Wait();
Load(10,6).Wait();
Load(10,6).Wait();