gpt4 book ai didi

c# - STAThread 属性是要求还是建议?

转载 作者:行者123 更新时间:2023-11-30 20:22:56 24 4
gpt4 key购买 nike

我为 AutoCAD 编写了托管扩展。当 AutoCAD 加载扩展时,它会启动一些 IExtensionApplication.Initialize() 方法。我需要在应用程序的主 Thread 中启动此方法。为此,为此方法设置 STAThread 属性就足够了吗?此属性是要求还是建议

最佳答案

[STAThread] 属性仅适用于独立可执行程序的 Main() 入口点。这是您对操作系统做出的 promise ,告诉它您的程序的主线程“表现良好”。它必须泵出一个消息循环并且永不阻塞。违背 promise 导致难以诊断的不当行为,死锁很常见。

当您编写 AutoCAD 扩展时,这些都不适用。您没有创建线程,是 AutoCAD 创建的。您不能做出任何 promise ,必须由 AutoCAD 来实现它们。它也不是“主线程”,这是一个只能适用于独立程序的术语。

调用您的扩展的线程几乎肯定已经是一个单线程单元,您可以在代码中使用 Thread.GetApartmentState() 来仔细检查。 STA 是显示 UI 的线程所必需的,这是您在扩展程序中经常做的事情。

关于c# - STAThread 属性是要求还是建议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30260684/

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