0

button_clickイベントでは、非同期で時間のかかる計算を開始しますTaskTask.ContinueWithUI 同期コンテキストへの継続に TaskShedulerを使用して設定し、非同期計算の結果をTextbox.

ここで、この最後の部分が次のような例外をスローするとします。

private void button1_Click(object sender, EventArgs e)
{
   Task.Factory.StartNew(DoSomeCalculations).ContinueWith
      (t => { throw new Exception("Some Exception"); }, TaskScheduler.FromCurrentSynchronizationContext()); 
}

デバッグ オプション "Enable Just My Code" を有効にすると、プログラムが停止し、"Exception was unhandled by user code" という警告が表示されます。

しかし、このオプションを設定しないと、例外はどこにも消えません (プログラムのクラッシュはなく、何もありません)。

では、この例外をどこでどのように処理できますか?

編集:タグが示すように、私は.NET-4.0を使用していることに注意してください

4

3 に答える 3

0

async void メソッド (特にイベント ハンドラーの場合) の使用を回避できない場合のベスト プラクティスに従って、そのメソッドに try catch を実装する必要があります。ただし、スローされる例外をキャッチするために、呼び出すすべての非同期メソッドに async Task メソッド シグネチャがあることを確認する必要があります。

于 2016-03-09T18:34:42.177 に答える