http://topic.csdn.net/u/20090425/14/76d8da5d-e360-4129-984e-7d3845338c4f.html
上面的这个帖子是实现了按整分触发!但是现在我发现有误差,第一次明明调整成整分触发了,周期是60秒!但是过一会,再跟踪,发现时间不是整分了?难道有误差?
上面的这个帖子是实现了按整分触发!但是现在我发现有误差,第一次明明调整成整分触发了,周期是60秒!但是过一会,再跟踪,发现时间不是整分了?难道有误差?
试试这个System.Timers.Timer
private void Form1_Load(object sender, EventArgs e)
{
System.Timers.Timer tm = new System.Timers.Timer(100);
tm.Elapsed += new System.Timers.ElapsedEventHandler(tm_Elapsed);
tm.Start();
} void tm_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
System.Timers.Timer timer1 = sender as System.Timers.Timer;
if (timer1.Interval == 100 && DateTime.Now.Second == 0)
{
timer1.Interval = 60000;//重新设置为1分钟间隔
} if (timer1.Interval == 60000)
{
MessageBox.Show("");
}
}
System.Threading.Timer tm;
private void Form1_Load(object sender, EventArgs e)
{
tm =
new System.Threading.Timer(new System.Threading.TimerCallback(old_Elapsed)
,null,0,100
);
} void old_Elapsed(object state)
{
if ( DateTime.Now.Second == 0)
{
tm.Dispose();
tm =
new System.Threading.Timer(new System.Threading.TimerCallback(new_Elapsed)
, null, 0, 60000
);
}
}
void new_Elapsed(object state)
{
MessageBox.Show("");
}
试了system.timer.timer,好像也是一样的问题,也是有误差!提前一秒!
private void Form1_Load(object sender, EventArgs e)
{
System.Timers.Timer tm = new System.Timers.Timer(100);
tm.Elapsed += new System.Timers.ElapsedEventHandler(tm_Elapsed);
tm.Start();
}
bool done = false;
void tm_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
if (DateTime.Now.Second == 0) //当秒针是0的时候,因为间隔100毫秒,1秒钟会做10次这个判断
{
if(!done) //判断这一秒内事情做过没有
{
done = true;
//做你的事情
}
}
else
{
done =false; //不在0秒的时候,设置为未作
}
}
if (DateTime.Now.Second == 0) //当秒针是0的时候,因为间隔100毫秒,1秒钟会做10次这个判断
{
if(!done) //判断这一秒内事情做过没有
{
done = true;
//轮询数据库 <==============这个地方是60秒才会进来一次的!!!
}
}
//轮询数据库 <==============这个地方是60秒才会进来一次的!!!
替换成
MessageBox.Show("xx");
看看是不是1分钟才执行一次
谢谢东东呛!
我这做的是周期提醒的东东!@如果是从后台发消息,用socket实现!
有没有相应的例子?
没有做过socket!