George Swan
Вам нужно проверить свой метод, чтобы узнать, была ли запрошена отмена бронирования. Вот фрагмент из ViewModel, чтобы показать тип шаблона, который вам нужен.
private CancellationTokenSource cts;
//called from a 'start' button click
private async void OnStartAsync(object arg)
{
IsStarted = true;
cts = new CancellationTokenSource();
CancellationToken token = cts.Token;
try
{
//this runs your asynchronous method
//you must check periodically to see
//if cancellation has been requested
await Task.Run(() =>
{
while (true)
{
Thread.Sleep(100);
//check to see if operation is cancelled
//and throw exception if it is
token.ThrowIfCancellationRequested();
}
},token);
}
catch (OperationCanceledException)
{
IsStarted = false;
}
}
private bool isStarted;
public bool IsStarted
{
get
{
return isStarted;
}
set
{
isStarted = value;
StartCommand.RaiseCanExecuteChanged();
CancelCommand.RaiseCanExecuteChanged();
}
}
//called from a 'cancel' button
private void OnCancel(object arg)
{
cts.Cancel();
}