5

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

4

2 回答 2

7

对于非托管进程,您可以通过将适当的参数传递给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

于 2008-10-14T04:43:51.403 回答
1

c++ 没有内置的线程支持。您要查找的内容取决于您在应用程序中实现线程的方式。赢32?线程?提升::线程?无论您使用哪种 API,都将决定您的问题的答案。

编辑:看起来这可能有一个例子给你:http: //msdn.microsoft.com/en-us/library/system.threading.apartmentstate.aspx

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

于 2008-10-14T04:02:24.280 回答