【发布时间】:2013-09-20 21:57:52
【问题描述】:
我还没有为 NUnit 解决这个问题。有一个类似的问题,here 提出了这个异常。答案解决了 xUnit 的使用问题,提问者报告说他让它为 MSTest 工作。我尝试在[TearDown]、[TestFixtureTearDown] 和[Test] 方法中调用Dispatcher.CurrentDispatcher.InvokeShutdown();,但仍然出现异常。
关于我的实现的更多细节:我创建了一个扩展 System.Windows.Window 的 InputBox 类。我做了一个静态方法,InputBox.Show(prompt),它执行以下代码:
var input = "";
var t = new Thread(() =>
{
var inputBox = new InputBox(prompt);
inputBox.ShowDialog();
input = inputBox.Input;
}) {IsBackground = true};
t.SetApartmentState(ApartmentState.STA);
t.Start();
t.Join();
return input;
有什么想法吗?
【问题讨论】:
-
我在您的代码中没有看到任何
Dispatcher。添加Dispatcher.Run()作为线程的最后一行。 -
代码 sn-p 不是很有帮助,它实际上并没有显示对 InvokeShutdown 的调用。 WPF 对线程非常挑剔。此代码完成后,STA 线程是一只死去的挪威鹦鹉。不要试图阻止它,它正停在笼子的底部,渴望峡湾。 NUnit 确实使将测试线程配置为 STA 线程变得更加困难。被this answer覆盖