首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Invoke()被阻塞

Invoke()被阻塞
EN

Stack Overflow用户
提问于 2008-11-13 14:55:07
回答 4查看 13.4K关注 0票数 23

我的应用程序GUI会不时地停止重新绘制。有很多线程正在触发各种事件(比如定时器或网络数据就绪等)。此外,还有许多控件正在订阅这些事件。因此,所有事件处理程序都玩InvokeRequired/Invoke游戏。现在我明白了,当GUI冻结时,很多线程都在等待Invoke()返回。看起来消息泵停止抽水了。处理程序如下所示:

代码语言:javascript
复制
private void MyEventHandler( object sender, EventArgs e ) {
    if ( InvokeRequired ) {
        Invoke( new EventHandler( MyEventHandler ), sender, e );
        return;
    }

    SetSomeStateVariable();
    Invalidate();
}

有什么想法吗?

解决方案: BeginInvoke()。看起来你应该总是使用BeginInvoke(),如果你有很多的交叉线程事件...

谢谢。

谢谢大家。

编辑:看起来BeginInvoke()真的解决了这个问题。直到现在才会结冰。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/287142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档