он вызывает событие, которое заново запускает этот метод. Также этот метод нужно иметь возможность завершать досрочно, для этого в каждую таску прокинут canellationToken. Проблема в том, что после Cancel() вызывая этот метод - начинается stack overflow этого метода. Примерный код:
async Task ThatMethod()
{
await task1.WithCancellation(cancellation.Token).SuppressCancellationThrow();
await task2.WithCancellation(cancellation.Token).SuppressCancellationThrow();
await task3.WithCancellation(cancellation.Token).SuppressCancellationThrow();
ThatMethodFinished?.Invoke();
}
//авто-перезапуск
ThatMethodFinished+=()=>ThatMethod();
//вынужденный перезапуск
cancellation.Cancel();
//что-то здесь происходит
ThatMethod();
А, так его нужно обнулять?...
Перед перезапуском делайте новый токен.
Почему-то думал, что он одноразово отсылает сигнал. Спасибо!
Обсуждают сегодня