【发布时间】:2011-02-26 14:28:37
【问题描述】:
我们知道,除了实例化元素的线程之外,不可能从任何线程执行操作任何 UI 元素属性的代码......我的问题是:为什么?
我记得当我们使用 COM 用户界面元素时(在 COM/Visual Basic 6.0 时代),所有 UI 元素都是使用 COM 类和 co-class 创建的,它们使用称为 Thread- 的内存模型存储其资源 -本地存储 (TLS),但我记得,这是必需的,因为与 COM 组件的构造方式相关,并且不应该与 .NET UI 元素相关。这种限制仍然存在的根本原因是什么?
是因为底层操作系统仍然对所有 UI 元素使用基于 COM 的 Win32 API 类,即使是在托管 .NET 应用程序中操作的那些?
【问题讨论】:
-
我喜欢你的想法,考虑到 .net 应该让 RAD 更快,我们为什么要不得不担心所有的线程tomgiggery。我的意思是它不应该只是工作,.Net 框架为我们解决了所有这些问题。更深入地说,为什么 Windows/操作系统不照顾它。
-
我的另一个总猜测,但我认为其意图是当操作系统完全迁移到使用托管代码 api 并剥离旧的 Win32 API 时,这个限制就会消失。 . 但如果有更基本的事情发生,则不会......
标签: .net user-interface multithreading