protected override void OnStart(string[] args)
{
//在应用程序启动时运行的代码
//定义定时器
int interval = 120 * 60000;//1分钟 = 60000毫秒
System.Timers.Timer myTimer = new System.Timers.Timer(interval);
myTimer.Elapsed += new ElapsedEventHandler(myTimer_Elapsed);
myTimer.Enabled = true;
myTimer.AutoReset = true;
}
void myTimer_Elapsed(object source, ElapsedEventArgs e)
{
步骤1();
步骤2();
}这个服务是2个小时执行一次
在执行的时候,当步骤1();执行完后,过30分后再执行步骤2();
请问怎么实现,谢谢!
int count = 0;
protected override void OnStart(string[] args)
{
//在应用程序启动时运行的代码
//定义定时器
int interval = 30 * 60000;// 1分钟 = 60000毫秒
System.Timers.Timer myTimer = new System.Timers.Timer(interval);
myTimer.Elapsed += new ElapsedEventHandler(myTimer_Elapsed);
myTimer.Enabled = true;
myTimer.AutoReset = true;
}
void myTimer_Elapsed(object source, ElapsedEventArgs e)
{
count++;
if (count == 4)
步骤1();
else if (count == 5)
{
步骤2();
count = 0; // 如果需要重头再来
}
}
也可以像1L,修改执行周期时间,然后用变量来标识..
如果只用一个Timer的话,在步骤1后,重新设定Timer的间隔为30分钟,然后你需要把原来的Elapsed上的事件订阅删除,重新订阅,然后在里面处理步骤2的内容。
------protected override void OnStart(string[] args)
{
//在应用程序启动时运行的代码
//定义定时器
int interval1 = 30 * 60000;// 一个小时的间隔
int interval2 = 30 * 90000;// 一个半小时的间隔
System.Timers.Timer myTimer1 = new System.Timers.Timer(interval1);
System.Timers.Timer myTimer2 = new System.Timers.Timer(interval2); myTimer1.Elapsed += new ElapsedEventHandler(myTimer_Elapsed1);
myTimer1.Enabled = true; myTimer2.Elapsed += new ElapsedEventHandler(myTimer_Elapsed2);
myTimer2.Enabled = true;
}
void myTimer_Elapsed1(object source, ElapsedEventArgs e)
{
步骤1();
}
void myTimer_Elapsed2(object source, ElapsedEventArgs e)
{
步骤2();
}------------这样步骤1会 一个小时后执行
步骤2会一个半小时后执行