但是,对于控件,我发现在线程应用程序中使用InvokeRequired检查有点繁琐。我已经创建了一个静态方法,我认为它解决了我繁琐的InvokeRequired检查。uiControl.IsDisposed) if (uiControl.InvokeRequired) uiControl.BeginInvoke
为此,我设计了以下模式:所有数据更新事件处理程序都必须获取锁,然后检查InvokeRequired;如果是这样,则通过调用Invoke来完成这项工作。object(); { {
if (c.InvokeRequired我在调用堆栈中返回到我的LockAndInvoke,瞧,c.InvokeRequired是真的,但是else分支被采用了!这就像是在执行else分支之后,在另一个线程