码迷,mamicode.com
首页 > Web开发 > 详细

.net中定时器超时问题

时间:2021-01-28 11:41:56      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:exception   一个   report   test   方法   rtp   complete   +=   run   

当定时器下一个周期到来的时候,上一个周期程序还没有执行完,这种情况需要在第一个周期进入的时候设置timer enabled为false,等执行完成之后再设为true;

 

main()

{

try

{
m_timer = new System.Timers.Timer();
m_timer.Interval = 30000;
m_timer.Elapsed += new ElapsedEventHandler(Timer_Tick);
m_timer.Enabled = true;
}
catch (Exception ex)
{
LogManager.WriteStatusLine("创建监听Socket线程失败...");
}

}

private void Timer_Tick(object sender, ElapsedEventArgs e)
{
m_timer.Enabled = false; //先关闭定时器,完成一次循环后重新开启--在RunWorkerCompleted方法中
BackgroundWorker work = new BackgroundWorker();
work.WorkerReportsProgress = true;
work.WorkerSupportsCancellation = true;
work.DoWork += new DoWorkEventHandler(RunTaskWork);
work.RunWorkerCompleted += new RunWorkerCompletedEventHandler(RunWorkerCompleted);
work.RunWorkerAsync();
}

private void RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
outLog.Info("定时器轮询周期结束");
m_timer.Enabled = true;
}

private void RunTaskWork(object sender, DoWorkEventArgs e)
{
outLog.Info("定时器开始新轮询周期");
StartPost();
}

 

.net中定时器超时问题

标签:exception   一个   report   test   方法   rtp   complete   +=   run   

原文地址:https://www.cnblogs.com/zxf12107/p/14334080.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!