C# 计时器一次运行一个实例



我正在创建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.
}

相关内容

最新更新