我们有一个作为windows服务执行的进程, 这个过程作为接口服务器处理传入消息,将它们转换并发送到另一个接口。什么时候视窗服务被认为是“开始”
这是一个相当繁重的过程,它需要将很多东西加载到内存中,并且需要一些时间(几分钟)。因为它的性质,当我们使用它的Windows服务启动它时,即使我们可以看到该进程已经工作并且处理消息就好了,它仍然处于“开始”状态很长一段时间(有时甚至超过20分钟) 通过它的日志)。
所以问题是 - 什么时候服务被认为是“开始”,什么时候被认为是“开始”?基于哪些因素?
每个Windows服务都使用SetServiceStatus函数将其状态报告给服务控制管理器。当它告诉Windows它已经启动时,该服务被认为是“开始”的,当这种情况发生时,这完全取决于程序员。 (如果您使用的是.NET框架提供的ServiceBase类,则该服务会报告OnStart函数返回时立即启动该服务。) –