Rob*_*Rob 5 c# multithreading assert mstest
我有一个使用多个线程的集成测试.我希望任何线程能够通过测试(并拆除其余部分).但是,后台线程上的异常导致MSTest失败 - 您只是得到一个错误:
在测试运行时,代理程序进程已停止
我想我可以在后台线程上捕获任何异常,并唤醒主线程以使测试失败,但是有更简单/更优雅的方式吗?
如果您绝对需要使用不同的线程(而不是一个ThreadPool线程),您可以使用TaskwithTaskCreationOptions.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);
}
Run Code Online (Sandbox Code Playgroud)