2

我有一个使用 C++ WinRT DLL 的 C# 程序。C# 程序创建公共 WinRT 类 Foo 的实例,该实例在内部尝试实例化未声明为公共的第二个 WinRT 类 Bar 的对象。在 Bar 类上调用“ref new”时,它会抛出一个异常,提示“不支持从 MTA 激活单线程类”。

如何将 Bar 类配置为在 MTA 样式的线程应用程序中工作?它是按类还是 DLL 范围的设置?

4

1 回答 1

3

它是每个类的行为,由属性ThreadingModelMarshallingBehavior. 有关详细信息,请参阅 MSDN - 线程和编组

用法是这样的:

using namespace Windows::Foundation::Metadata;
using namespace Platform;

[Threading(ThreadingModel=ThreadingModel::STA]
[MarshalingBehavior(MarshalingType=MarshalingType::None)] 
public ref class MySTAClass
{
}; 
于 2012-11-12T21:41:16.090 回答