Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我应该在何时将线程设置为ApartmentState.STA?_C#_.net - Fatal编程技术网

C# 我应该在何时将线程设置为ApartmentState.STA?

C# 我应该在何时将线程设置为ApartmentState.STA?,c#,.net,C#,.net,我很想知道在C#net中何时使用STA/MTA 在与STA/MTA COM对象进行互操作时,可以使用它们。这将为您提供大量资源。 同时阅读和阅读。 其要点是STA单元用于非线程安全的COM对象,而MTA可以多线程方式用于线程安全的COM对象。另请参见: using (ManualResetEventSlim mre = new ManualResetEventSlim(false)) { Thread _STAThread = new Thread(new ThreadS

我很想知道在C#net中何时使用STA/MTA


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

这将为您提供大量资源。 同时阅读和阅读。 其要点是STA单元用于非线程安全的COM对象,而MTA可以多线程方式用于线程安全的COM对象。

另请参见:
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(); 
}