Я пытаюсь реализовать logi c
- когда код NavigateToAsyn c запускается через несколько секунд
- при вызове метода Pause Мне нужно прекратить выполнение NavigateToAsyn c.
public async Task StartAsync()
{
this.tokenSource = new CancellationTokenSource();
this.delayToken = this.tokenSource.Token;
Task.Delay(this.delayTimeout, delayToken).ContinueWith(async (delayTask) =>
{
if (!delayToken.IsCancellationRequested)
{
if (!this.isAlreadyStarted)
{
this.isAlreadyStarted = true;
await this.navigator.NavigateToAsync(this.delayToken);
}
}
});
}
public void Pause()
{
this.tokenSource.Cancel();
this.isAlreadyStarted = false;
}
Но в случае, когда NavigateToAsyn c уже запущен и пользователь снова вызывает StartAsyn c Я теряю дескриптор tokenSource, поэтому метод Pause не может отменить действие.
Как лучше всего это исправить?