定时Windows服务 - 如果自定义进程的时间长于计时器间隔,该怎么办?

时间:2013-09-16 18:29:49

标签: c# timer windows-services scheduled-tasks

我的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;
}

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

这样的事情会适合吗?

1 个答案:

答案 0 :(得分:1)

您应该使用单独的线程来读取JSON提要中的数据。对数据库的提要和存储的处理应该在另一个线程中进行。