我很想知道在C#.net?
中何时使用STA / MTAusing (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 :(得分:4)
在与STA / MTA COM对象进行互操作时使用它们。
答案 1 :(得分:4)
这stackoverflow answer会给你很多。 另请阅读this和this MSDN page。 它的要点是STA公寓用于非线程安全的COM对象,而MTA可以以多线程方式用于线程安全的COM对象。