Отмена в 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();

Ответы (0 шт):