私は c# でメトロ アプリケーションを開発しています。async および await キーワードを使用して、メトロ非同期操作 (データのダウンロードなど) を作成しています。モーダルの「お待ちください」ダイアログを常に表示します。バックグラウンド操作をキャンセルできるように、このモーダル ダイアログに [キャンセル] ボタンを追加したいと思います。しかし、処理タスクをキャンセルする方法がわかりません...その方法の例はありますか?
これは私のタスクの例です:
// Starts task
public void StartTask()
{
// show the modal dialog with progress
_progressDialog.IsOpen = true;
_progressDialog.CancelClick += ProgressDialog_CancelClick;
await ToWork();
_progressDialog.IsOpen = false;
}
// Task which takes some seconds
private async Task DoWork()
{
await DownloadData();
await ProcessData();
}
// Cancel task
private void CancelClick(object sender, RoutedEventArgs e)
{
// hide the modal dialog with progress
_progressDialog.IsOpen = false;
// TODO: Cancel task
GoBack(this, e);
}