我什么时候应该设置一个线程到ApartmentState.STA?

时间:2011-11-07 11:33:38

标签: c# .net

我很想知道在C#.net?

中何时使用STA / MTA
using (ManualResetEventSlim mre = new ManualResetEventSlim(false)) 
{       
    Thread _STAThread = new Thread(new ThreadStart(() =>                 
        {
             globalComObject = new ComClass();                     
             mre.Set();                     
             try                     
             {                         
                  Thread.CurrentThread.Join();
             }
             catch (ThreadAbortException)                     
             { } 
         }));
     _STAThread.SetApartmentState(ApartmentState.STA);                    
     _STAThread.IsBackground = true;                 
     _STAThread.Start();                 
     mre.Wait(); 
} 

2 个答案:

答案 0 :(得分:4)

在与STA / MTA COM对象进行互操作时使用它们。

答案 1 :(得分:4)

stackoverflow answer会给你很多。 另请阅读thisthis MSDN page。 它的要点是STA公寓用于非线程安全的COM对象,而MT​​A可以以多线程方式用于线程安全的COM对象。