C#:托管 Windows 服务

本文关键字:服务 Windows 托管 | 更新日期: 2023-09-27 18:32:35

我已经完成了编写Windows服务的工作。我的服务所做的是调用另一个服务并从该服务中提取一些数据。代码工作正常,因为我在调试时检查了它(用于附加到进程选项来调试服务)。

现在我必须在实际服务器上托管服务。我可以使用命令 InstallUtil 托管该服务.exe但我的问题是这个 Windows 服务如何在实际服务器上工作?我知道有一个 OnStart() 方法,但它每秒都会被调用吗?我不知道。。。

我期望的是我的 Windows 服务应该始终按照代码编写的方式调用其他服务,以检查它是否可以从该服务下载数据(如果有的话)?

我怎样才能做到这一点?请帮忙!!我错过了什么吗?

C#:托管 Windows 服务

OnStart仅在

Windows 服务启动时调用。

您不应该在此方法中做很多事情,因为操作系统希望此调用快速返回(我认为默认值为 30 秒或类似内容)。

您要在 OnStart 方法中执行的操作是创建一个每 X 秒或分钟运行一次的计时器以执行实际工作。

另一种选择是在此方法中启动一个新线程(或长时间运行的Task)。这样的线程或Task实际上会有一个循环,并完成您需要做的工作。