在不使用计时器控制的情况下创建windows服务



我正在创建windows服务,无论我正在读什么文章,他们都在使用System.Timers.Timer,但没有提到他们使用它的原因。

是否强制使用Timer

以下URL使用带有windows服务的Timer

https://www.c-sharpcorner.com/UploadFile/8a67c0/create-and-install-windows-service-step-by-step-in-C-Sharp/

https://www.c-sharpcorner.com/article/create-windows-services-in-c-sharp/

https://dzone.com/articles/create-windows-services-in-c

https://www.aspsnippets.com/Articles/Tutorial-to-create-a-simple-Windows-Service-with-sample-example-in-C-and-VBNet.aspx

难道不能用的这些方法编写代码吗

protected override void OnStart(string[] args)
{
    base.OnStart(args);
    GetFailedProductDetails();
}
protected override void OnStop()
{
    base.OnStop();
}

编辑:

每30分钟执行一次服务的逻辑

<appSettings>
<add key ="Mode" value ="Interval"/>
<add key ="IntervalMinutes" value ="30"/>
<add key="ClientSettingsProvider.ServiceUri" value="" />
</appSettings>

我的目标:

我想每30分钟运行一次这个服务来执行GetFailedProductDetails()方法。为此,我在App.config文件中编写了代码。

服务不会重复。它只是启动一次,然后只要不停止就运行。若它需要重复执行任务,那个么您需要注意在代码中重复自己。

当然,可以设置一个带有无休止for-循环和Thread.Sleep()的丑陋系统,但问题是,当启动服务时,Windows希望OnStart完成,因此可以得出结论,该服务是启动的,而不是仍在启动备使服务操作运行的一切,但不应该自己执行这些操作。

因此,使用计时器的原因是为了使OnStart功能能够正确完成,然后,定期地,计时器可以启动服务操作,在您的情况下是GetFailedProductDetails()功能。


至于这段配置,正如我在评论中所说,一点xml不是代码。您从中复制的指南明确编写了读取、解释和应用这些设置的程序,以设置Timer对象,使其在配置的时间间隔内重复。复制xml而不复制附带的代码对您没有任何帮助。

当然,可以使用配置文件来设置间隔设置,但您还必须实际编写代码来读取它们。不过,重复服务的概念不需要这样的设置。你可以用半小时的硬编码间隔来完美地编程服务,然后就这样吧。

相关内容

最新更新