前几天用那个System.Timers.Timer类中的Timer,代码很简单
Code
System.Timers.Timer t = new System.Timers.Timer(10000);//实例化Timer类,设置间隔时间为10000毫秒;
t.Elapsed += new System.Timers.ElapsedEventHandler(theout);//到达时间的时候执行事件;
t.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
public void theout(object source, System.Timers.ElapsedEventArgs e)
{
MessageBox.Show("OK!");
}
System.Timers.Timer t = new System.Timers.Timer(10000);//实例化Timer类,设置间隔时间为10000毫秒;
t.Elapsed += new System.Timers.ElapsedEventHandler(theout);//到达时间的时候执行事件;
t.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
public void theout(object source, System.Timers.ElapsedEventArgs e)
{
MessageBox.Show("OK!");
}
好用是好用,但是停止就有问题了,怎么也停止不了它,无奈就用了System.Threading.Timer中的Timer,代码如下:
Code
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace ThreadTimer //让程序间隔执行并可以停止
{
public partial class Form1 : Form
{
AutoResetEvent autoEvent;
System.Threading.Timer stateTimer;
public int invokeCount;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
autoEvent = new AutoResetEvent(false); //初始状态设置为非终止
TimerCallback timerDelegate = new TimerCallback(FindQQWindow);
stateTimer = new System.Threading.Timer(timerDelegate, autoEvent, 1000, 800); //每0.8秒钟查找一次
}
public void FindQQWindow(object stateInfo)
{
//AutoResetEvent autoEvent = (AutoResetEvent)stateInfo;
//autoEvent.Set();
invokeCount++;
if (invokeCount > 5)
{
autoEvent.WaitOne(10, false); //设置10毫秒,是让程序有一个等待,如果设为0,会一直弹窗口
stateTimer.Dispose();
MessageBox.Show("找到了QQ聊天窗口");
}
else
{
MessageBox.Show("正在查找QQ聊天窗口" + " " + invokeCount.ToString());
}
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace ThreadTimer //让程序间隔执行并可以停止
{
public partial class Form1 : Form
{
AutoResetEvent autoEvent;
System.Threading.Timer stateTimer;
public int invokeCount;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
autoEvent = new AutoResetEvent(false); //初始状态设置为非终止
TimerCallback timerDelegate = new TimerCallback(FindQQWindow);
stateTimer = new System.Threading.Timer(timerDelegate, autoEvent, 1000, 800); //每0.8秒钟查找一次
}
public void FindQQWindow(object stateInfo)
{
//AutoResetEvent autoEvent = (AutoResetEvent)stateInfo;
//autoEvent.Set();
invokeCount++;
if (invokeCount > 5)
{
autoEvent.WaitOne(10, false); //设置10毫秒,是让程序有一个等待,如果设为0,会一直弹窗口
stateTimer.Dispose();
MessageBox.Show("找到了QQ聊天窗口");
}
else
{
MessageBox.Show("正在查找QQ聊天窗口" + " " + invokeCount.ToString());
}
}
}
}