c# – 锁定winforms控件

我需要确保,一旦执行命中方法,此方法接收的控件不会被另一个线程更改.
基本上,我想到这样的事情:

private void doSomeWork(Control control) {
    lock (control) {
        // do some stuff with the control...
    }
}

这是一个坏主意吗?

编辑:

实际上,我正在尝试做的是确保在执行某些控件的方法时(其中,将通过反射执行),控件不会被另一个线程处理.

解决方法:

在一个性能良好的应用程序中,Windows窗体控件已经仅限于一个线程.如果任何线程尝试访问在不同线程中创建的控件,则将引发异常.

你的代码没有任何问题,只要知道它现在几乎没用,除非你正在通过保护(这是可能的)破解你的方式.

通常,当您在工作线程中创建或操作数据时,工作线程将向UI线程发送事件以更新UI.工作线程决不应该更新UI本身,它将自动失败.

上一篇:c# – 我对Dictionary的使用是否需要锁定?


下一篇:java – 使用内部锁定进入块