Application.Idle()方法表示:当应用程序处于空闲状态时执行相应代码。

示例程序

1、界面设计:一个简单的Lable控件

2、代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO; namespace ApplicationIdleDemo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} public System.Timers.Timer timer;
private void Form1_Load(object sender, EventArgs e)
{
InitTimer();
InitRefresh();
Refresh();
} /// <summary>
/// 初始化Timer控件
/// </summary>
private void InitTimer()
{
timer = new System.Timers.Timer();
//到达定时时间的时候执行的事件
timer.Elapsed += new System.Timers.ElapsedEventHandler(TimeUp);
//设置是执行一次(false) 还是一直执行(true)
timer.AutoReset = true;
//是否执行System.Timers.Timer.Elapsed事件
timer.Enabled = true;
//启动
timer.Start(); } /// <summary>
/// 定时到点执行的事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void TimeUp(object sender, System.Timers.ElapsedEventArgs e)
{
Refresh();
} private void Refresh()
{
this.lbl_idle.Text = "进入空闲期";
string strPath = Application.StartupPath + @"test.txt";
using (StreamWriter sw = new StreamWriter(strPath, true))
{
sw.WriteLine("开始进入空闲期,当前时间:" + DateTime.Now);
sw.Close();
}
} private void InitRefresh()
{
//设定IDLE自动结束
Application.Idle += new EventHandler(OnApplicationIdle);
//设定消息过滤
FormMessageFilter MessageFilter = new FormMessageFilter();
MessageFilter.ApplicationActive += new EventHandler(OnApplicationActive);
Application.AddMessageFilter(MessageFilter); } /// <summary>
/// 程序进入空闲时期时会一直执行此事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnApplicationIdle(object sender, EventArgs e)
{
if (timer != null)
timer.Start();
} /// <summary>
/// 当键盘及鼠标事件,关闭timer
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnApplicationActive(object sender, EventArgs e)
{
if (timer != null)
{
timer.Stop();
EndIdle();
} } private void EndIdle()
{
this.lbl_idle.Text = "结束空闲期,进入活动期";
string strPath = Application.StartupPath + @"test.txt";
using (StreamWriter sw = new StreamWriter(strPath,true))
{
sw.WriteLine("开始进入活动期,当前时间:" + DateTime.Now);
sw.Close();
} } } public class FormMessageFilter : IMessageFilter
{
public event EventHandler ApplicationActive; /// <summary>
/// 只要是按键盘及鼠标便会引发事件
/// 因为是为了监视键盘及鼠标,所以均return false;
/// return ture:会把输入的值清除
/// 0x100 /* WM_KEYDOWN
/// 0x101 /* WM_KEYUP
/// 0x200 /* WM_MOUSEMOVE
/// 0x201 /* WM_LBUTTONDOWN
/// 0x202 /* WM_LBUTTONUP
/// 0x203 /* WM_LBUTTONDBLCLK
/// 0x204 /* WM_RBUTTONDOWN
/// 0x205 /* WM_RBUTTONUP
/// 0x206 /* WM_RBUTTONDBLCLK
/// 0x20a /* WM_MOUSEWHEEL
/// </summary>
public bool PreFilterMessage(ref Message m)
{
if (m.Msg == 0x100 || m.Msg == 0x101 || (m.Msg > 0x199 && m.Msg < 0x207) || m.Msg == 0x20a)
{
if (ApplicationActive != null)
{
ApplicationActive(this, new EventArgs());
}
}
return false;
}
}
}

Application.idle方法的更多相关文章

  1. 使用Application.GetResourceStream方法加载资源时得到的总是null

    我们可以预先把程序中用到的资源,如图片,音乐等放入项目中,打包进XAP文档,需要的时候从中调用.下面就说说具体实现方法. 第一步,把数据存进项目. 1.右键点击项目名称-添加-新建文件夹(英文版请自行 ...

  2. WinForm中Application.Idle事件用法

    Application.Idle 事件 描述:当应用程序完成处理并即将进入空闲状态时发生.如果您有必须执行的任务在线程变为空闲之前,请将它们附加到此事件. public partial class F ...

  3. Unity iOS打开AppStore评星页面,浅谈Application.OpenURL()方法。

    http://fairwoodgame.com/blog/?p=38 Unity iOS打开AppStore评星页面,浅谈Application.OpenURL()方法. Posted in  Uni ...

  4. android结束进程、退出application的方法

    1.finish()方法 finish是Activity的类,仅仅针对Activity,当调用finish()时,只是将活动推向后台,并没有立即释放内存,活动的资源并没有被清理:调用finish()方 ...

  5. Android中Application全局方法(变量)的调用

    Application和Actovotu,Service一样是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象,用来存储系统的一些信息.通常我们是 ...

  6. struts2 action中获取request session application的方法

    共四种方式: 其中前两种得到的是Map<String,Object>  后两种得到的才是真正的request对象 而Map就是把request对象中的属性取出做成了键值对而已. [方法一] ...

  7. sql sever 2012重装数据库时,出现cannot find one or more components, Please reinstall the application.解决方法

    错误原因: 由于我将SQL数据库做了删除,重装.在删除的过程中,不小心删除了某个SQL的插件,导致了这种问题的出现. 当我们去操作工具时,也会提示以上错误. 解决办法: 1)去控制面板--所有控制面板 ...

  8. Application.Exit()结束程序,但线程还在的解决方法。

    出现此情况大多原因是使用了多线程编程,或者你所调用的dll使用了多线程.我们知道,一般情况下的线程执行完指定的任务之后是会关闭了的,但是如果对于一些循环类线程,或者忘记关掉的线程时,这个时候就需要我们 ...

  9. Application.Exit()结束程序,但线程还在的解决方法

    转自:http://bbs.51cto.com/thread-970057-1.html 出现此情况大多原因是使用了多线程编程,或者你所调用的dll使用了多线程.  我们知道,一般情况下的线程执行完指 ...

随机推荐

  1. 用Visual Studio 2010开发Android应用

    在开发你的第一个Android应用程序之前,你应该先检查一下是否安装了Android SDK,以及是否创建好了Android模拟器(AVD),如果有不清楚的地方,请先看我以前发布的这篇文章“Andro ...

  2. RHCE7 管理II-4计划将来的Linux任务

    (1) at 一次性的计划任务 语法: # at [参数] [时间] at> 执行的指令 退出at命令 ctrl+d [root@localhost ~]# at now at> mkdi ...

  3. android使用JsonWriter拼json字符串

    JsonWriter使用 Example: 拼一个如下的json格式String {    [        {            "id": 912345678901,    ...

  4. docker 概念初识

    1 docker 优势,一次创建或配置可以在任意时间.任意环境让应用正常的运行. 快速交付和部署,开发人员可以使用镜像快速构建一套标准的开发环境:开发完后测试和运维人员可以直接使用相同的环境来部署代码 ...

  5. 在vps上安装中文环境

    现在vps默认都是安装的英文环境,其实变成中文环境也很简单.我记录以下在ubuntu下如何改变为中文环境. 1.安装中文环境包. sudo apt install language-pack-zh-h ...

  6. apache配置,禁止指定后缀访问

    每天都有人来服务器上扫描点什么,想下载点数据库或者什么的 服务器是java的,没有asp或者mdb这样的访问 用一下配置,可以禁止asp或者mdb访问,也可以加上zip和rar禁止 <Direc ...

  7. iOS学习笔记(八)——iOS网络通信http之NSURLConnection

    转自:http://blog.csdn.net/xyz_lmn/article/details/8968182 移动互联网时代,网络通信已是手机终端必不可少的功能.我们的应用中也必不可少的使用了网络通 ...

  8. brendangregg

    http://www.slideshare.net/brendangregg/presentations http://techblog.netflix.com/2015/07/java-in-fla ...

  9. angular学习笔记(七)-迭代2

    视图的迭代和它的ng-repeat属性绑定的数据是实时绑定的,一旦数据发生了改变,视图也会立即更新迭代. 还是刚才的那个例子,给它添加一个添加数据按钮和一个删除数据按钮. <!DOCTYPE h ...

  10. sqlalchemy使用

    1.SQLAlchemy的作用 ORM对象关系映射技术 2.SQLAlchemy安装 pip install SQLAlchemy 查看SQLAlchemy版本 3.生成数据库连接 from sqla ...