我在一段代码中运行我的单元测试,该代码在测试中执行以下操作:

Assert.IsNotNull(target.Icon);


在Icon属性的getter中,我正在这样做:

System.Windows.Controls.Image img = new System.Windows.Controls.Image();


抛出此异常:System.InvalidOperationException:调用线程必须是STA,因为许多UI组件都需要STA。

我明白这意味着什么,我知道我需要使用Dispatcher,但是我对如何或为什么感到有点困惑……这是我的ViewModel的一个属性,运行时我没有任何这些异常应用程序。

其他信息:仅当我升级到.NET 4时这才开始失败。

最佳答案

这里的问题是您正在对WPF进行单元测试,这需要STA才能正常运行,但是单元测试框架正在使用MTA。您需要设置单元测试框架以在STA中运行测试。

每个框架都有不同的实现方式。通常,您只需在Google中键入测试框架名称和STA即可找到它。


NUnit:http://nunit.org/index.php?p=requiresSTA&r=2.5

关于c# - 创建System.Windows.Controls.Image会引发异常-如何使用调度程序实例化该异常?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3002927/

10-13 01:29