gpt4 book ai didi

multithreading - 来自 C# 应用程序中使用的 C++ WinRT DLL 的 "Activating a single-threaded class from MTA is not supported"错误

转载 作者:行者123 更新时间:2023-12-03 12:56:28 25 4
gpt4 key购买 nike

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

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

最佳答案

它是每个类的行为,由属性 ThreadingModel 控制和 MarshallingBehavior .有关详细信息,请参阅 MSDN - Threading and Marshaling .

用法是这样的:

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

[Threading(ThreadingModel=ThreadingModel::STA]
[MarshalingBehavior(MarshalingType=MarshalingType::None)]
public ref class MySTAClass
{
};

关于multithreading - 来自 C# 应用程序中使用的 C++ WinRT DLL 的 "Activating a single-threaded class from MTA is not supported"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13351917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com