我问这个是因为我的C#项目有问题。 为了解决这个问题,我知道重新设计我的代码就足够了,但是如果Windows服务没有按照我认为的那样开始,那么我需要做更多的思考。
因此我需要回答这个问题......
Windows Service何时启动,或者这是开发人员可以选择的内容,如果是这样,我可以在代码中完成哪些操作?
更多信息:
我知道有延迟启动...但它不那么可靠,我的服务有时会正确启动,而有些则不然。因为它依赖于VirtualBox或HD来设置。
我尝试在Service Startup上使用一个单独的线程来给系统安排时间,这最初解决了问题,但在进一步测试后意识到,如果用户想要停止我的服务,它就会变成一个问题因为线程仍然会活跃。并制造了一个错误。
答案 0 :(得分:0)
如果是这种情况,有没有办法知道HardDisk何时解决(启动完成)以启动该过程?
您所描述的内容或多或少是Delayed Start的内容。
我知道有延迟启动......但它不那么可靠,我的服务有时会正确启动而其他服务则没有。因为它依赖于VirtualBox或HD来设置。
糟糕。听起来你真的想要等待硬盘解决 - 你想等待VirtualBox完成一些事情。当Windows启动所有延迟启动服务时,VirtualBox有时会完成其工作,有时则不会。所以,这不会起作用。
打开服务的属性表,然后单击 Dependencies 选项卡。你可能没有列出任何东西。现在,打开“传真”服务,然后转到该选项卡。你会看到这项服务取决于“电话”服务。有道理。
Windows遇到了与您相同的问题 - 某些服务依赖于其他服务,Windows需要确保按照正确的顺序完成所有操作。你也应该这样做。希望您可以等待VirtualBox服务。如果可以,请将服务安装程序设置为properly call out its dependencies:
此列是系统必须在此服务之前启动的服务或加载顺序组的名称列表。列表中的单独名称由Nulls组成。如果服务没有依赖项,则指定Null或空字符串。使用语法[〜]插入Null。对组的依赖意味着如果在尝试启动组的所有成员后,该组中至少有一个成员正在运行,则该服务可以运行。
您的安装程序可能会自动完成此过程。
或者,更多地手动,您可能只是在Start()方法中等待磁盘上发生的事情。例如,如果您正在等待创建文件,请查找该文件FileSystemWatcher,并在创建文件时通知您。