3

私は 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);
}
4

1 に答える 1