C++ 中的 Thread.SetApartmentState 相当于什么?

问题描述 投票:0回答:2

在 C# 中,类

SetApartmentState
中有一个方法
Thread
。 我如何在 C++ 中做同样的事情?

c++ windows multithreading com
2个回答
9
投票

对于非托管进程,您可以通过将适当的参数传递给

CoInitializeEx()
来控制用于线程的单元模型。拉里·奥斯特曼(Larry Osterman)为这些写了一个很棒的小指南:

...
当线程调用

CoInitializeEx
(或
CoInitialize
),线程告诉 COM 这是两种公寓类型中的哪一种 准备主持。为了表明 该线程应该存在于 MTA 中,您 将
COINIT_MULTITHREADED
标志传递给
CoInitializeEx
。为了表明 线程应该托管一个 STA,或者调用
CoInitialize
或通过
COINIT_APARTMENTTHREADED
标记为
CoInitializeEx

...

-- http://blogs.msdn.com/larryosterman/archive/2004/04/28/122240.aspx


1
投票

在 C++11 发布之前,C++ 不具备内置线程支持。您要寻找的内容取决于您在应用程序中实现线程的方式。 Win32?线程?提升::线程?无论您使用哪个 API,都将决定您问题的答案。

编辑:看起来这可能有一个适合您的示例:http://msdn.microsoft.com/en-us/library/system.threading.apartmentstate.aspx

看起来它适用于托管c++。

© www.soinside.com 2019 - 2024. All rights reserved.