代码如下,我想用Timer做个循环,
循环的目的是每天在指定的时间里只执行一次任务(以小时为单位),
5分钟检查一次.任务成功后这天就不在执行了,
到第二天这个时间再继续循环执行;
该如何实现?
我用Timer.AutoReset=false执行一次后,以后就不执行了;
改为True,则只要在那个小时内就不停的循序;
public void AutoChoose()
{
System.Timers.Timer aTimer = new System.Timers.Timer();
aTimer.Elapsed += new ElapsedEventHandler(TimeEvent);
//5分钟检查一次时间
aTimer.Interval = 300000;
//是否循环执行,还是执行一次
aTimer.AutoReset = false;
aTimer.Enabled = true;
}
private void TimeEvent(object source, ElapsedEventArgs e)
{
//获得现在的时间和星期几
int NowHour = e.SignalTime.Hour;
string NowWeek = BL.GetNowWeek();
//获得制定的时间和星期几
int aHour = BL.GetHour("");
string aWeek = BL.GetWeek("");
//每天执行
if (aWeek == "everyday" && NowHour == aHour)
StartExecJob();
//每星期几执行
else if (NowWeek == aWeek && NowHour == aHour)
StartExecJob();
}
循环的目的是每天在指定的时间里只执行一次任务(以小时为单位),
5分钟检查一次.任务成功后这天就不在执行了,
到第二天这个时间再继续循环执行;
该如何实现?
我用Timer.AutoReset=false执行一次后,以后就不执行了;
改为True,则只要在那个小时内就不停的循序;
public void AutoChoose()
{
System.Timers.Timer aTimer = new System.Timers.Timer();
aTimer.Elapsed += new ElapsedEventHandler(TimeEvent);
//5分钟检查一次时间
aTimer.Interval = 300000;
//是否循环执行,还是执行一次
aTimer.AutoReset = false;
aTimer.Enabled = true;
}
private void TimeEvent(object source, ElapsedEventArgs e)
{
//获得现在的时间和星期几
int NowHour = e.SignalTime.Hour;
string NowWeek = BL.GetNowWeek();
//获得制定的时间和星期几
int aHour = BL.GetHour("");
string aWeek = BL.GetWeek("");
//每天执行
if (aWeek == "everyday" && NowHour == aHour)
StartExecJob();
//每星期几执行
else if (NowWeek == aWeek && NowHour == aHour)
StartExecJob();
}
解决方案 »
- EntityFramework6多对多关系
- 请教 遍历Struct内的常量 ???
- 解析html
- 怎么获取某个字符在RichTextBox所在的行
- 多线程和线程池区别,用的地方
- 滚动条AutoScrollPosition属性如何设置自动滚动的定位?在线等,急急急!
- 读取excel的高级问题(100分)
- 准菜鸟求救!!!关于C#中有没有和Microsoft.VisualBasic.Strings.Format()相对应的function?(在线等待)
- 怎样让程序独立运行?
- 怎么让Excel进程退出(在WinForm中)UP有分
- Microsoft Visual Studio2008 Windows服务怎样启动它,怎么用?
- 求:曲面生成算法
该天存在记录不执行
windows服务
开始的时候flag是true,比如5点执行了一次,把flag设置成false,以后每次再判断现在到没到6点,如果没到,那就不管,如果到6点了,然后把flag设置成true。if(当前小时数 != 上次执行任务的小时数)
{
flag = true;
}if(flag == true)
{
if(执行任务成功)
{
flag = false;
记录当前小时数
}
}
FileStream fs = new FileStream("E:\\" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt", FileMode.Append);
StreamWriter streamWriter = new StreamWriter(fs);
streamWriter.BaseStream.Seek(0, SeekOrigin.End);
streamWriter.WriteLine(DateTime.Now.ToString() + " " + "操作成功!");
streamWriter.Flush();
streamWriter.Close();
if(today != lasterdate)
{
//do}