【发布时间】:2011-06-24 13:41:45
【问题描述】:
如果我在 UI 线程上调用一个方法,它是否会被 Windows 消息队列海化并且随后不需要重新进入?
private void CalledFromWorkerThread()
{
//changed from 'InvokeRequired' Anti-Pattern
this.Invoke((Action) (() => _counter++; /* Is this ok? */ ));
}
澄清:只有 UI 线程会访问 _counter。
【问题讨论】:
-
如果你还没有在柜台上锁,你也应该使用。
-
测试
InvokeRequired是一种反模式。Control.Invoke已经包含这样的检查。 -
@0A0D Skeet 先生没有在上述链接中调用的方法中使用锁?如果只是访问
_counter的 UI 线程是安全的,那是我最初的问题吗? -
是的,只要是UI线程,你就对了。
标签: c# winforms multithreading