定时 Windows 服务 - 如果自定义进程花费的时间超过计时器间隔,该怎么办?

本文关键字:计时器 怎么办 时间 服务 Windows 如果 自定义 进程 定时 | 更新日期: 2023-09-27 18:31:41

我的Windows服务每30秒(基于计时器)从jSON提要中提取大约100项数据。

目前,该服务运行良好。但我唯一担心的是不太可能发生的事件,即处理传入数据并将其发送到数据库所需的时间超过 30 秒的间隔。

谁能建议确保数据可以在不造成任何延误的情况下进行处理的最佳方式。由于 jSON 提要提供的数据是实时且最新的,我需要确保不会错过传入的请求。

此外,我是否通过创建定期运行的 Windows 服务而不是使用计划任务来采用正确的方法?

更新

经过一番研究,我正在考虑禁用Timer_Elapsed事件中的计时器:

void Timer_Elapsed(object sender, EventArgs e)
{
    timer.Enabled = false;
    //Carry out custom processes
   timer.Enabled = true;
}

因此,在计时器再次启动之前,我的自定义进程应该有足够的时间完成。

这样的东西合适吗?

定时 Windows 服务 - 如果自定义进程花费的时间超过计时器间隔,该怎么办?

您应该专门创建一个单独的线程来读取 JSON 源中的数据。数据库的馈送和存储的处理应在另一个线程中进行。