一、现象描述
如果我们在一个非UI线程里为事件(Event)Application.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.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 的源代码和示例程序! DockPanel Suite是一个国外开源项目。 项目要引用WeifenLuo.WinFormsUI....
WeifenLuo.WinFormsUI.Docking 是一个开源的.NET Framework库,专门用于在Windows Forms应用程序中实现类似Microsoft Visual Studio 2012的浮动面板和多文档界面(MDI)布局。这个库允许开发者创建高度自定义和灵活...
WeifenLuo.WinFormsUI.Docking 是一个开源的.NET框架组件,专门用于Windows Forms应用程序中的...总之,WeifenLuo.WinFormsUI.Docking是一个宝贵的资源,无论是对于.NET初学者还是经验丰富的开发者,都能从中获益良多。
WeifenLuo.WinFormsUI.Docking.dll 重新编译,支持4.0了 输出选4.0,不要client那个
WeifenLuo.WinFormsUI.Docking 控件应用 C# WeifenLuo.WinFormsUI.Docking 控件是一个强大的界面布局控件,可以保存自定义的布局为 XML 文件,并可以加载 XML 配置文件。下面是关于 WeifenLuo.WinFormsUI.Docking ...
标题 "weifenluo.winformsui.docking3.1.0" 指的是一个针对Windows Forms应用程序的停靠库,由Weifen Luo开发。这个版本是2021年8月的最后更新,更新到了3.1.0,意味着它包含了自上一版本以来的一些错误修复和潜在...
总之,Bunifu UI WinForms 1.7.0.0为Windows Forms应用提供了丰富的UI设计选项和强大的功能,让开发者能够构建出极具吸引力的应用程序,即使在Delphi这样的非.NET环境中也能通过适配实现类似的效果。
标题 "weifenluo.WinFormsUI.Docking的源码及dll" 涉及的是一个针对Windows Forms应用程序的Docking库,由weifenluo开发。这个库提供了在用户界面中实现浮动、停靠窗口功能的组件,使得开发者可以创建类似Visual ...
【标题】"WeifenLuo.WinFormsUI.Docking:停靠窗口与浮动窗口技术" 在Windows Forms应用程序开发中,用户界面的灵活性和可定制性是提升用户体验的关键因素之一。WeifenLuo.WinFormsUI.Docking库正是为此目的而设计...
在本文中,我们将深入探讨 Bunifu UI WinForms库的核心特点、功能以及如何在Delphi项目中集成和使用它。 首先,Bunifu UI WinForms提供了丰富的预定义控件集,包括按钮、滑块、进度条、标签、输入框等,这些控件都...
在.NET框架下,WinForm应用开发是常见的桌面应用程序设计方式,而`WinForm界面开发之布局控件WeifenLuo.WinFormsUI.Docking.zip`则是一个关于WinForm界面布局的第三方开源框架,它提供了丰富的控件和功能,帮助...
7. **性能优化**:考虑到效率,WeifenLuo.WinFormsUI.Docking在设计时考虑了性能,确保在处理大量面板时仍能保持流畅。 8. **文档与示例**:虽然提供的主要是源代码,但通常会包含一些文档和示例项目,帮助开发者...
这是dll文件,直接引用即可 winform开发框架,可以实现像Visual Studio的窗口停靠、拖拽等功能。
使用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插件是一个在C# WinForm开发中广泛使用的库,它为Windows桌面应用程序提供了强大的停靠功能。这个插件由Weifen Luo开发,旨在为开发者提供灵活、自定义的界面布局解决方案,使用户...
本篇文章将详细介绍DockPanel Suite的核心组件——WeifenLuo.WinFormsUI.Docking.dll,以及如何在WinForm应用中使用这一强大的工具。 DockPanel Suite是由Weifen Luo开发的一个免费的、开源的Windows Forms控件集合...