c# – 创建System.Windows.Controls.Image会抛出异常 – 如何使用调度程序实例化它?

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

Assert.IsNotNull(target.Icon);

在Icon属性的getter里面,我这样做:

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

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

我理解这意味着什么,并且我理解我需要使用Dispatcher,但是我对于如何或为什么有点困惑…这是我的ViewModel的属性,我在运行时没有得到任何这些异常应用程序.

其他信息:这只在我升级到.NET 4时才开始失败.

最佳答案 这里的问题是你是单元测试WPF,它需要STA正常运行,但单元测试框架正在使用MTA.您需要设置单元测试框架以在STA中运行测试.

每个框架都有不同的方式.通常只需在google中键入测试框架名称和STA即可找到它.

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

点赞