gpt4 book ai didi

.net - .NET UI 元素线程限制的原因

转载 作者:行者123 更新时间:2023-12-04 08:46:28 25 4
gpt4 key购买 nike

我们知道,除了实例化元素的线程之外,不可能从任何线程执行操作任何 UI 元素属性的代码……我的问题是:为什么?

我记得当我们使用 COM 用户界面元素时(在 COM/Visual Basic 6.0 时代),所有 UI 元素都是使用 COM 类和共同类创建的,它们使用称为 Thread-Local-Storage 的内存模型存储其资源(TLS),但我记得,这是必需的,因为与 COM 组件的构造方式相关,并且不应该与 .NET UI 元素相关。这种限制仍然存在的根本原因是什么?

是因为底层操作系统仍然对所有 UI 元素使用基于 COM 的 Win32 API 类,即使是在托管 .NET 应用程序中操作的那些?

最佳答案

AFAIK,它甚至比 COM 更基本。它归结为好的 ol' Windows API。我相信 Windows 中的窗口应该由一个线程拥有,期间。每个线程都有自己的消息泵,将消息分派(dispatch)到它拥有的窗口。它是 Windows 的一个非常基本的构造——这些天可能有点过时,但很基本。

我的感觉是,当您需要将 WPF 集成到 Windows 窗体应用程序中时,或者如果您需要使用您在某处获得的 HWND 与应用程序中其他地方的 Windows 对象进行猴子操作时,这种线程关联有助于互操作性......它可能这也是允许旧版本的 Windows (XP) 托管 WPF 应用程序而无需对操作系统本身进行任何重大架构更改的原因。

关于.net - .NET UI 元素线程限制的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2954139/

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