我需要确保,一旦执行命中方法,此方法接收的控件不会被另一个线程更改.
基本上,我想到这样的事情:
private void doSomeWork(Control control) {
lock (control) {
// do some stuff with the control...
}
}
这是一个坏主意吗?
编辑:
实际上,我正在尝试做的是确保在执行某些控件的方法时(其中,将通过反射执行),控件不会被另一个线程处理.
解决方法:
在一个性能良好的应用程序中,Windows窗体控件已经仅限于一个线程.如果任何线程尝试访问在不同线程中创建的控件,则将引发异常.
你的代码没有任何问题,只要知道它现在几乎没用,除非你正在通过保护(这是可能的)破解你的方式.
通常,当您在工作线程中创建或操作数据时,工作线程将向UI线程发送事件以更新UI.工作线程决不应该更新UI本身,它将自动失败.