Application.idle方法
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方法的更多相关文章
- 使用Application.GetResourceStream方法加载资源时得到的总是null
我们可以预先把程序中用到的资源,如图片,音乐等放入项目中,打包进XAP文档,需要的时候从中调用.下面就说说具体实现方法. 第一步,把数据存进项目. 1.右键点击项目名称-添加-新建文件夹(英文版请自行 ...
- WinForm中Application.Idle事件用法
Application.Idle 事件 描述:当应用程序完成处理并即将进入空闲状态时发生.如果您有必须执行的任务在线程变为空闲之前,请将它们附加到此事件. public partial class F ...
- Unity iOS打开AppStore评星页面,浅谈Application.OpenURL()方法。
http://fairwoodgame.com/blog/?p=38 Unity iOS打开AppStore评星页面,浅谈Application.OpenURL()方法. Posted in Uni ...
- android结束进程、退出application的方法
1.finish()方法 finish是Activity的类,仅仅针对Activity,当调用finish()时,只是将活动推向后台,并没有立即释放内存,活动的资源并没有被清理:调用finish()方 ...
- Android中Application全局方法(变量)的调用
Application和Actovotu,Service一样是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象,用来存储系统的一些信息.通常我们是 ...
- struts2 action中获取request session application的方法
共四种方式: 其中前两种得到的是Map<String,Object> 后两种得到的才是真正的request对象 而Map就是把request对象中的属性取出做成了键值对而已. [方法一] ...
- sql sever 2012重装数据库时,出现cannot find one or more components, Please reinstall the application.解决方法
错误原因: 由于我将SQL数据库做了删除,重装.在删除的过程中,不小心删除了某个SQL的插件,导致了这种问题的出现. 当我们去操作工具时,也会提示以上错误. 解决办法: 1)去控制面板--所有控制面板 ...
- Application.Exit()结束程序,但线程还在的解决方法。
出现此情况大多原因是使用了多线程编程,或者你所调用的dll使用了多线程.我们知道,一般情况下的线程执行完指定的任务之后是会关闭了的,但是如果对于一些循环类线程,或者忘记关掉的线程时,这个时候就需要我们 ...
- Application.Exit()结束程序,但线程还在的解决方法
转自:http://bbs.51cto.com/thread-970057-1.html 出现此情况大多原因是使用了多线程编程,或者你所调用的dll使用了多线程. 我们知道,一般情况下的线程执行完指 ...
随机推荐
- 阿里云ECS服务器Linux环境下配置php服务器(二)--phpMyAdmin篇
上一篇讲了PHP服务器的基本配置,我们安装了apache,php,还有MySQL,最后还跑通了一个非常简单的php页面,有兴趣的朋友可以看我的这篇博客: 阿里云ECS服务器Linux环境下配置php服 ...
- 学习WCF笔记之二
一.学习文章http://www.cnblogs.com/iamlilinfeng/archive/2012/09/25/2700049.html 二.步骤 学习WFC,按照大神的文章一步步学习,不过 ...
- Python练习笔记——编写一个阶乘函数
当输入一个数字时,函数自动计算该数的 阶乘 def factorial(num): j = 1 for i in range(1,num+1): j = j*i print(j) num = int( ...
- Linux内核(15) - 方法论
什么是方法论 方法论给人的第一感觉就是它是一个玄之又玄的很朦胧的东西,显然,学习本身就是一件很玄乎的事情,有些人整天潇潇洒洒没见怎么用心就能够获得很好的成绩,而有些人则相反,投悬梁锥刺骨也还是成绩平平 ...
- 【JUnit4.10源码分析】3.4 Description与測试树
Description使用组合模式描写叙述一个測试树.组合模式中全部元素都是Composite对象. Description有成员变量private final ArrayList<Descri ...
- OpenGL核心之SSAO技术解说(一)
笔者介绍:姜雪伟,IT公司技术合伙人.IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D ...
- [转]Windows 7自带很好用的磁盘检查与修复的环境
大家可能都知道Windows 7自带很好用的检查与修复的环境.在启动系统前按F8(就是进入安全模式的方法),Windows 7会有一个修复计算机的选项.选择进入,装载一些必要的文件之后,选择语言.登陆 ...
- mini2440裸机音乐播放器(非常久曾经的笔记)
[这是好久曾经写的.有点乱,没时间整理.当做记录用的.] 图片粘贴失效.没上传图,想要的直接下载文档吧. 项目目的:通过IIS,触摸屏,LCD模块实现音乐播放器功能(button上一首.下一首.播放. ...
- Android: TODO 应用交互的两种实现方法(Behavior)
最近在写 TODO app,涉及到 Calendar 和 RecyclerView 的交互, 需求: 1. 往上滑动, Calendar 显示为周 2. 周显示模式下,往下滑动,显示为月 3. 列表下 ...
- OOM问题定位方法
1. 背景 线上内存OOM问题是最难定位的问题,最常见的原因: (1)本身资源不够 (2)申请的太多 (3)资源耗尽 某服务器上部署了Java服务,出现OutOfMemoryError,请问有可能是什 ...