Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 定时Windows服务-如果自定义进程花费的时间超过计时器间隔,该怎么办?_C#_Timer_Windows Services_Scheduled Tasks - Fatal编程技术网

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

C# 定时Windows服务-如果自定义进程花费的时间超过计时器间隔,该怎么办?,c#,timer,windows-services,scheduled-tasks,C#,Timer,Windows Services,Scheduled Tasks,我有一个Windows服务,它每30秒(基于计时器)从jSON提要中提取大约100项数据 目前,这项服务运作良好。但我唯一关心的是一个不太可能发生的事件,即处理传入数据并将其发送到数据库的时间间隔超过30秒 有没有人能建议最好的方法来确保数据可以在不造成任何阻塞的情况下进行处理。由于jSON提要提供的数据是实时的和最新的,因此我需要确保不会错过传入的请求 此外,通过创建定期运行的Windows服务而不是使用计划任务,我是否采用了正确的方法 更新 经过一些研究,我正在考虑在timer_Appeas

我有一个Windows服务,它每30秒(基于计时器)从jSON提要中提取大约100项数据

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

有没有人能建议最好的方法来确保数据可以在不造成任何阻塞的情况下进行处理。由于jSON提要提供的数据是实时的和最新的,因此我需要确保不会错过传入的请求

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

更新 经过一些研究,我正在考虑在timer_Appeased事件中禁用计时器:

void Timer_Elapsed(object sender, EventArgs e)
{
    timer.Enabled = false;

    //Carry out custom processes

   timer.Enabled = true;
}
因此,在计时器再次启动之前,我的自定义进程应该有足够的时间来完成


像这样的东西合适吗?

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

谢谢您提供的信息。拥有独立的线程似乎是一个不错的选择。我以前没有构建过多线程服务,这是可行的吗?因此,每个线程将执行一些功能,在每个间隔之后,有一个延迟来允许数据处理完成?