STAThread:single threaded apartment 直译过来是:单线程单元套间
MTAThread:multiple threaded apartment 直译过来是:多线程单元套间
差别其实就是这个:
其他线程对STA中的COM对象的访问需要列集(marshal),通过列集,自动实现了多线程访问下的同步。
所有线程对MTA中的COM对象的访问不需要列集,直接访问,需要COM组件自身实现多线程下的同步。
COM对象和客户端的组件模型设定, 决定最终的组件模型时怎样, 以下这篇文章挺详细:
http://www.cnblogs.com/ioexception/p/dotnet_STAThread_MTAThread.html