下面的代码:
[RequiresSTA]
[Test]
public async Task TestSta()
{
Console.WriteLine(Thread.CurrentThread.ManagedThreadId+" - "+Thread.CurrentThread.GetApartmentState());
// *** await something here ***
Console.WriteLine(Thread.CurrentThread.ManagedThreadId+" - "+Thread.CurrentThread.GetApartmentState());
new FrameworkElement();
}
产生以下输出:
9 - STA
12 - MTA
然后,在 new FrameworkElement() 上引发 InvalidOperationException。
NUnit 支持 STA 线程创建,现在支持异步测试,但似乎并没有通过创建 MTA SynchronizationContext 来混合两种模式。
我如何让这个工作?任何解决方法?