Mat*_*ley 102 .net c# multithreading sta
来自有关STAThread的MSDN文章:
表示应用程序的COM线程模型是单线程单元(STA).
(作为参考,这是整篇文章.)
单线程公寓......好吧,我的头脑.另外,我在某处读到,除非你的应用程序使用COM互操作,否则这个属性实际上什么都不做.那究竟它究竟做了什么,以及它如何影响多线程应用程序?多线程应用程序(包括使用Timer
s到异步方法调用的任何人,而不仅仅是线程池等)都应该使用MTAThread,即使它"只是为了安全"?STAThread和MTAThread实际上做了什么?
Bru*_*uce 59
公寓穿线是COM的概念; 如果您没有使用COM,并且您调用的API都没有"使用COM",那么您无需担心公寓.
如果您确实需要了解公寓,那么细节可能会有点复杂 ; 一个可能过于简单的版本是标记为STA的COM对象必须在STAThread上运行,标记为MTA的COM对象必须在MTA线程上运行.使用这些规则,COM可以优化这些不同对象之间的调用,从而避免在不必要的地方进行编组.