C#:托管 Windows 服务
C#: Hosting a Windows Service
我写完了 windows 服务。我的服务所做的是调用另一个服务并从该服务中提取一些数据。代码工作正常,因为我在调试时检查了它(使用附加到进程选项来调试服务)。
现在我必须在实际服务器上托管服务。我可以使用命令 InstallUtil.exe 托管服务,但我的问题是 windows 服务如何在实际服务器上运行?我知道有一个 OnStart() 方法,但是它每秒都会被调用吗?我不知道...
我期望的是我的 windows 服务应该始终调用代码中编写的其他服务,以检查它是否可以从该服务下载数据(如果有的话)?
我怎样才能做到这一点?请帮忙!!我错过了什么吗?
OnStart
仅在 windows 服务启动时调用。
你不应该在这个方法中做很多事情,因为操作系统希望这个调用 return 很快(我认为默认是 30 秒或类似的时间)。
您想在 OnStart
方法中做的是创建一个每 X 秒或分钟运行一次的计时器来完成实际工作。
另一种选择是在此方法中启动一个新线程(或长运行 Task
)。这样的线程或 Task
实际上会有一个循环并完成您需要做的工作。
我写完了 windows 服务。我的服务所做的是调用另一个服务并从该服务中提取一些数据。代码工作正常,因为我在调试时检查了它(使用附加到进程选项来调试服务)。
现在我必须在实际服务器上托管服务。我可以使用命令 InstallUtil.exe 托管服务,但我的问题是 windows 服务如何在实际服务器上运行?我知道有一个 OnStart() 方法,但是它每秒都会被调用吗?我不知道...
我期望的是我的 windows 服务应该始终调用代码中编写的其他服务,以检查它是否可以从该服务下载数据(如果有的话)?
我怎样才能做到这一点?请帮忙!!我错过了什么吗?
OnStart
仅在 windows 服务启动时调用。
你不应该在这个方法中做很多事情,因为操作系统希望这个调用 return 很快(我认为默认是 30 秒或类似的时间)。
您想在 OnStart
方法中做的是创建一个每 X 秒或分钟运行一次的计时器来完成实际工作。
另一种选择是在此方法中启动一个新线程(或长运行 Task
)。这样的线程或 Task
实际上会有一个循环并完成您需要做的工作。