C ++中Thread.SetApartmentState的等价物是什么?

时间:2008-10-14 03:48:10

标签: c++ windows multithreading com

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

2 个答案:

答案 0 :(得分:7)

对于非托管进程,您可以通过将适当的参数传递给CoInitializeEx()来控制用于线程的单元模型。拉里奥斯特曼写了一篇伟大的小指南:

  

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

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

答案 1 :(得分:1)

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

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

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