我正在创建Windows服务。我想每 30 秒运行一次服务。
所以我在Windows服务上使用以下代码开始使用计时器。
protected override void OnStart(string[] args)
{
timer1 = new Timer();
timer1.Interval = 30000;
timer1.Elapsed += new ElapsedEventHandler(timer1_tick);
timer1.Start();
}
在timer1_tick功能中,我正在执行一些操作,例如更新用户详细信息,上传和下载文件。
但在这里我不确定上述操作是否会在 30 秒内完成。所以我想一次运行一个。
在这里timer1_tick每 30 秒调用一次函数。仅当 timer1_tick 函数完成每个任务时,才应发生这种情况。
怎么做?
您应该停止计时器并等待文件的上传和下载完成使用 Timer.Stop();
和 Timer.Start()
:
void timer1_tick(...){
timer1.Stop();
//Do your download, upload, etc.
timer1.Start();
}
希望对您有所帮助!
根据您的要求,请使用异步编程。它可能会对你有所帮助。谢谢
timer1.Elapsed += new ElapsedEventHandler(await timer1_tick);
async Task<void> timer1_tick()
{
//Do your download, upload, etc.
}