定义了一个 private System.Timers.Timer tm1 = null;想定时在每天的指定时间点,然后5分钟间隔内持续执行一个方法。现在程序在指定的时间点执行,但是,间隔设置了不生效,后面不会继续执行了。请帮我看一下是哪里出问题了?谢谢
private void tm1_Elapsed(object source, ElapsedEventArgs e)
{
if (DateTime.Now.Minute.ToString() == this.scsj.ToString())
{
Logger.log("到达上传时间点:" + this.scsj.ToString() + "时" + Environment.NewLine);
this.sgscbz = 0;
this.tm1.Enabled = false;
this.tm1.Elapsed -= new ElapsedEventHandler(this.tm1_Elapsed);
this.tm1.Elapsed += new ElapsedEventHandler(this.tm2_Elapsed);
this.tm1.Interval = 300000;
this.tm1.Enabled = true;
this.tm1.Start();
this.tm2_Elapsed(null, null);
}
}
private void tm2_Elapsed(object source, ElapsedEventArgs e)
{
try
{
if (this.UploadData())
{
Logger.log("***********上传成功************");
}
else
{
this.tm1.Enabled = false;
this.tm1.Stop();
}
}
catch (Exception exception)
{
Logger.log("错误" + exception.Message);
MessageBox.Show(exception.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Hand);
}
}
//定时开启按钮
private void btnOption_Click(object sender, EventArgs e)
{
if (this.dsbz == 1)
{
if (this.tm1 == null)
{
this.tm1 = new System.Timers.Timer();
this.tm1.Elapsed += new ElapsedEventHandler(this.tm1_Elapsed);
this.tm1.Interval = 1000;
this.tm1.AutoReset = true;
}
this.tm1.Enabled = true;
this.tm1.Start();
this.tm1_Elapsed(null, null);
}
else if (this.tm1 != null)
{
this.tm1.Enabled = false;
}
}
你两处设置调用 tm2 方法,而 tm2 中关闭了计时器,你没有其他地方打开么?
由于参考资料中的问题和代码比较抽象,我无法准确理解题目的意思和需要优化的点。需要更多的问题细节和说明来澄清问题,以便提供更准确的解决方案。
你把定时器关了,当然就不执行了
如果你既需要每天定时执行,又需要每隔5分钟执行,那么要么你搞2个不同的定时器
要么你的程序干脆不要一直开着,反正一天里大部分时间它什么都不干
你不如让它执行完任务就自动退出,然后把它放系统的计划任务里每天定时启动