C#:托管Windows服务

Fre*_*cer 2 c# wcf web-services windows-services

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

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

我期待的是我的Windows服务应该总是调用代码中写的其他服务来检查它是否可以从该服务下载数据?

我怎样才能实现这一目标?请帮忙!!我错过了什么吗?

Yac*_*sad 5

OnStart 仅在Windows服务启动时调用.

你不应该在这个方法中做很多事情,因为操作系统期望这个调用快速返回(我认为默认是30秒或类似的东西).

你想在OnStart方法中做的是创建一个每X秒或几分钟运行一次的计时器来完成实际的工作.

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