5

複数のスレッドを使用する統合テストがあります。どのスレッドでもテストに失敗できるようにしたい(そして残りを破棄できるようにしたい)。ただし、バックグラウンドスレッドで例外が発生すると、MSTestが失敗します。エラーが発生するだけです。

テストの実行中にエージェントプロセスが停止しました

バックグラウンドスレッドで例外をキャッチし、メインスレッドをウェイクアップしてテストに失敗する可能性があると思いますが、より簡単でエレガントな方法はありますか?

4

1 に答える 1

0

絶対に別のスレッドを使用する必要がある場合 ( 1 つではなく) 、そのタスク専用のスレッドを作成するwithオプションをThreadPool使用できます(のスレッドではありません)。次に、そのタスクのプロパティを調べることができます。これはそのための簡単なコードです:TaskTaskCreationOptions.LongRunningThreadPoolIsFaultedException

var task = new Task(() => { throw new InvalidOperationException(); }, TaskCreationOptions.LongRunning);
task.Start();
try { task.Wait(); }
catch { }

if (task.IsFaulted)
{
    // do something about the exception
    Console.WriteLine(task.Exception);
}
于 2013-05-09T09:17:36.813 に答える