WinForms Control.Invoke规则是否适用于包含的对象?

我知道当从UI线程以外的线程访问控件时,多线程WinForms应用程序需要使用
Control.Invoke
Control.BeginInvoke
。 但是,当操纵控件中包含但不是从
Control
基类派生的对象时,此规则是否也适用? 例如,当使用
WebBrowser
控件时,可以在不使用ѭ0的情况下操作DOM吗? 谢谢, 蒂姆     
已邀请:
这适用于从
Control
继承的所有内容。 顺便说一句:你可以尝试一下。当您非法访问这些方法时,它通常会在调试模式下自动抛出。     
答案肯定是否定的。原因是因为你真的不知道
Control
何时以及如何使用所包含的对象,你当然不能在
Control
中注入必要的同步机制。例如,如果
Control
需要在从工作线程操作它的同时从WM_PAINT消息访问对象,会发生什么?你可以把必要的锁放在你的身边,但你几乎无法做到让
Control
的内部管道做同样的事情。     

要回复问题请先登录注册