gpt4 book ai didi

c# - STAThread 和多线程

转载 作者:IT王子 更新时间:2023-10-29 03:35:38 25 4
gpt4 key购买 nike

摘自关于 STAThread 的 MSDN 文章:

Indicates that the COM threading model for an application is single-threaded apartment (STA).

(作为引用,这是 the entire article 。)

单线程单元...好吧,我已经过了头了。另外,我在某处读到,除非您的应用程序使用 COM 互操作,否则此属性实际上什么都不做。那么它到底做了什么,它又是如何影响多线程应用程序的呢?多线程应用程序(包括从使用 Timer 的任何人到异步方法调用的任何东西,而不仅仅是线程池等)是否应该使用 MTAThread,即使它“只是为了安全”? STAThread 和 MTAThread 实际上做了什么?

最佳答案

单元线程是一个 COM 概念;如果您不使用 COM,并且您调用的 API 都没有“在幕后”使用 COM,那么您无需担心公寓。

如果您确实需要了解公寓,那么详情可以获取a little complicated ;一个可能过于简化的版本是标记为 STA 的 COM 对象必须在 STAThread 上运行,而标记为 MTA 的 COM 对象必须在 MTA 线程上运行。使用这些规则,COM 可以优化这些不同对象之间的调用,避免在不必要的地方进行编码。

关于c# - STAThread 和多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/165316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com