`
izuoyan
  • 浏览: 9220159 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Winforms: Application.Idle不能在非UI线程里注册

阅读更多

一、现象描述

如果我们在一个非UI线程里为事件(EventApplication.Idle注册一个处理器(Handler),我们将发现该事件处理器不会被调用到。

二、问题重现

1. Visual Studio中创建一个Winforms工程;

2. 添加Application.Idle的事件处理器的代码:

private static void Application_Idle(object sender, EventArgs args)

{

MessageBox.Show("Application is idle.", "Info");

}

3. 创建一个任务线程,并在该线程里为事件Application.Idle注册一个处理器:

public Form1()

{

InitializeComponent();

Thread thread = new Thread(new ThreadStart(RegisterIdleEvent));

thread.Start();

}

private static void RegisterIdleEvent()

{

Application.Idle +=new EventHandler(Application_Idle);

}

4. 运行该程序,我们发现没有消息框跳出来提示Application is idle

三、原因分析

Application.Idle在程序的UI线程的消息队列里所有消息已经响应完时被触发,此时其UI线程处于空闲状态。而我们新创建的任务线程没有消息队列,因此Application.Idle事件对这样的线程没有意义,那么它的处理器自然就不会被调用到了。

四、解决方案

我们只能在UI线程里注册Application.Idle事件。

分享到:
评论

相关推荐

    WeifenLuo.WinFormsUI.Docking3.1.0

    附件:WeifenLuo.WinFormsUI.Docking3.1.0.rar 包含: WeifenLuo.WinFormsUI.Docking.dll, license.txt ,WeifenLuo.WinFormsUI.Docking.pdb 等三个文件。基于Net4.0; 布局控件"WeifenLuo.WinFormsUI.Docking"是一个...

    WeifenLuo.WinFormsUI.Docking.dll 源码+示例 支持framwork4 最新版

    WeifenLuo.WinFormsUI.Docking.dll的源码+示例!支持framwork4 最新版。 没错!是WeifenLuo.WinFormsUI.Docking.dll 的源代码和示例程序! DockPanel Suite是一个国外开源项目。 项目要引用WeifenLuo.WinFormsUI....

    WeifenLuo.WinFormsUI.Docking 扁平化风格

    WeifenLuo.WinFormsUI.Docking 是一个开源的.NET Framework库,专门用于在Windows Forms应用程序中实现类似Microsoft Visual Studio 2012的浮动面板和多文档界面(MDI)布局。这个库允许开发者创建高度自定义和灵活...

    WeifenLuo.WinFormsUI.Docking源代码

    WeifenLuo.WinFormsUI.Docking 是一个开源的.NET框架组件,专门用于Windows Forms应用程序中的...总之,WeifenLuo.WinFormsUI.Docking是一个宝贵的资源,无论是对于.NET初学者还是经验丰富的开发者,都能从中获益良多。

    支持framwork4的WeifenLuo.WinFormsUI.Docking.dll

    WeifenLuo.WinFormsUI.Docking.dll 重新编译,支持4.0了 输出选4.0,不要client那个

    WeifenLuo.WinFormsUI.Docking 控件 应用 C# winform

    WeifenLuo.WinFormsUI.Docking 控件应用 C# WeifenLuo.WinFormsUI.Docking 控件是一个强大的界面布局控件,可以保存自定义的布局为 XML 文件,并可以加载 XML 配置文件。下面是关于 WeifenLuo.WinFormsUI.Docking ...

    weifenluo.winformsui.docking3.1.0,最新版本2021年8月最后更新

    标题 "weifenluo.winformsui.docking3.1.0" 指的是一个针对Windows Forms应用程序的停靠库,由Weifen Luo开发。这个版本是2021年8月的最后更新,更新到了3.1.0,意味着它包含了自上一版本以来的一些错误修复和潜在...

    Bunifu_UI_WinForms_1.7.0.0_Downloadly.ir.rar

    总之,Bunifu UI WinForms 1.7.0.0为Windows Forms应用提供了丰富的UI设计选项和强大的功能,让开发者能够构建出极具吸引力的应用程序,即使在Delphi这样的非.NET环境中也能通过适配实现类似的效果。

    weifenluo.WinFormsUI.Docking的源码及dll

    标题 "weifenluo.WinFormsUI.Docking的源码及dll" 涉及的是一个针对Windows Forms应用程序的Docking库,由weifenluo开发。这个库提供了在用户界面中实现浮动、停靠窗口功能的组件,使得开发者可以创建类似Visual ...

    WeifenLuo.WinFormsUI.Docking 停靠窗口、浮动窗口

    【标题】"WeifenLuo.WinFormsUI.Docking:停靠窗口与浮动窗口技术" 在Windows Forms应用程序开发中,用户界面的灵活性和可定制性是提升用户体验的关键因素之一。WeifenLuo.WinFormsUI.Docking库正是为此目的而设计...

    Bunifu_UI_WinForms_1.8.0.1_Downloadly.ir.rar

    在本文中,我们将深入探讨 Bunifu UI WinForms库的核心特点、功能以及如何在Delphi项目中集成和使用它。 首先,Bunifu UI WinForms提供了丰富的预定义控件集,包括按钮、滑块、进度条、标签、输入框等,这些控件都...

    WinForm界面开发之布局控件WeifenLuo.WinFormsUI.Docking.zip

    在.NET框架下,WinForm应用开发是常见的桌面应用程序设计方式,而`WinForm界面开发之布局控件WeifenLuo.WinFormsUI.Docking.zip`则是一个关于WinForm界面布局的第三方开源框架,它提供了丰富的控件和功能,帮助...

    WeifenLuo.WinFormsUI.Docking源代码 3.0.2最新源代码

    7. **性能优化**:考虑到效率,WeifenLuo.WinFormsUI.Docking在设计时考虑了性能,确保在处理大量面板时仍能保持流畅。 8. **文档与示例**:虽然提供的主要是源代码,但通常会包含一些文档和示例项目,帮助开发者...

    WeifenLuo.WinFormsUI.Docking.dll

    这是dll文件,直接引用即可 winform开发框架,可以实现像Visual Studio的窗口停靠、拖拽等功能。

    使用WeifenLuo.WinFormsUI.Docking 控件应用 实现窗体浮动 树形展示,索引目录查找功能

    使用WeifenLuo.WinFormsUI.Docking 控件应用 实现窗体浮动 树形展示,索引目录查找功能

    WeifenLuo.WinFormsUI.Docking

    vs2010添加WeifenLuo.WinFormsUI.Docking.DockPanel.dll文件后,从工具栏中添加DockPanel控件时报错,提示【类型 Universe 无法解析程序集: System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5...

    WeifenLuo.WinFormsUI.Docking.dll插件.rar

    WeifenLuo.WinFormsUI.Docking.dll插件是一个在C# WinForm开发中广泛使用的库,它为Windows桌面应用程序提供了强大的停靠功能。这个插件由Weifen Luo开发,旨在为开发者提供灵活、自定义的界面布局解决方案,使用户...

    WeifenLuo.WinFormsUI.Docking.zip

    本篇文章将详细介绍DockPanel Suite的核心组件——WeifenLuo.WinFormsUI.Docking.dll,以及如何在WinForm应用中使用这一强大的工具。 DockPanel Suite是由Weifen Luo开发的一个免费的、开源的Windows Forms控件集合...

Global site tag (gtag.js) - Google Analytics