複数のスレッドを使用する統合テストがあります。どのスレッドでもテストに失敗できるようにしたい(そして残りを破棄できるようにしたい)。ただし、バックグラウンドスレッドで例外が発生すると、MSTestが失敗します。エラーが発生するだけです。
テストの実行中にエージェントプロセスが停止しました
バックグラウンドスレッドで例外をキャッチし、メインスレッドをウェイクアップしてテストに失敗する可能性があると思いますが、より簡単でエレガントな方法はありますか?
複数のスレッドを使用する統合テストがあります。どのスレッドでもテストに失敗できるようにしたい(そして残りを破棄できるようにしたい)。ただし、バックグラウンドスレッドで例外が発生すると、MSTestが失敗します。エラーが発生するだけです。
テストの実行中にエージェントプロセスが停止しました
バックグラウンドスレッドで例外をキャッチし、メインスレッドをウェイクアップしてテストに失敗する可能性があると思いますが、より簡単でエレガントな方法はありますか?
絶対に別のスレッドを使用する必要がある場合 ( 1 つではなく) 、そのタスク専用のスレッドを作成するwithオプションをThreadPool
使用できます(のスレッドではありません)。次に、そのタスクのプロパティを調べることができます。これはそのための簡単なコードです:Task
TaskCreationOptions.LongRunning
ThreadPool
IsFaulted
Exception
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);
}