Всем привет. Вопрос по unitask. Есть такой код :
public class Screen
{
private CancellationTokenSource closeToken;
//Запускается при открытии окна
private async void WaitingClosingScreen()
{
closeToken = new CancellationTokenSource();
await UniTask.WaitUntilCanceled(closeToken.Token);
closeToken.Dispose();
Navigator.Pop();
}
// Нажата кнопка закрытия окна
private void OnClickClose()
{
closeToken.Cancel();
}
private aync void OnClickBuy()
{
//TODO
await animator.ShowAnimation(1);
await animator.ShowAnimation(3);
closeToken.Cancel();
}
}
Его проблема в том что если человек попытается закрыть окно во время анимации ( отрабатывает метод OnClickBuy()) отработает метод OnClickClose(). Токен задиспоузится. Но выполнение OnClickBuy() продолжится. Как прервать выполнение OnClickBuy() если игрок нажал на закрытие окна ?