来自 MSDN 关于 STAThread 的文章:
指示应用程序的 COM 线程模型是单线程单元 (STA)。
(作为参考,那就是整篇文章.)
单线程公寓...好吧,这超出了我的理解范围。另外,我在某处读到,除非您的应用程序使用 COM 互操作,否则该属性实际上根本不执行任何操作。那么它到底有什么作用,以及它如何影响多线程应用程序?应该多线程应用程序(其中包括任何使用Timer
异步方法调用,而不仅仅是线程池等)使用 MTAThread,即使它“只是为了安全”? STAThread 和 MTAThread 实际上是做什么的?
单元线程是一个 COM 概念;如果您不使用 COM,并且您调用的 API 都没有“在幕后”使用 COM,那么您无需担心公寓。
如果您确实需要了解公寓,那么详细信息可以获取有点复杂;一个可能过于简化的版本是,标记为 STA 的 COM 对象必须在 STAThread 上运行,而标记为 MTA 的 COM 对象必须在 MTA 线程上运行。使用这些规则,COM 可以优化这些不同对象之间的调用,避免在不必要的地方进行封送。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)