2011-11-07 50 views
3

我很想知道何时在C#.net中使用STA/MTA?什么时候应该将一个线程设置为ApartmentState.STA?

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(); 
} 
+0

**参见**: http://stackoverflow.com/questions/127188/could-you-explain-sta-and-mta – pjvds

回答

4

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

4

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

相关问题