C# Windows服务实际何时启动?

C# Windows服务实际何时启动?,c#,windows-services,C#,Windows Services,我问这个问题是因为我的C#项目有问题。 为了解决这个问题,我知道重新设计我的代码就足够了,但如果Windows服务不能按照我认为的方式启动,那么我需要做更多的思考 所以我需要回答这个问题 Windows服务什么时候启动,或者这是开发人员可以选择的,如果是,我可以在代码中的什么地方启动 更多信息: 我知道有延迟启动。。。但它并不那么可靠,有了它,我的服务有时会正确启动,而在其他情况下则不会。因为它依赖VirtualBox或HD进行设置 我尝试在服务启动时使用一个单独的线程来给系统时间来解决问题,

我问这个问题是因为我的C#项目有问题。 为了解决这个问题,我知道重新设计我的代码就足够了,但如果Windows服务不能按照我认为的方式启动,那么我需要做更多的思考

所以我需要回答这个问题

Windows服务什么时候启动,或者这是开发人员可以选择的,如果是,我可以在代码中的什么地方启动

更多信息:

  • 我知道有延迟启动。。。但它并不那么可靠,有了它,我的服务有时会正确启动,而在其他情况下则不会。因为它依赖VirtualBox或HD进行设置

  • 我尝试在服务启动时使用一个单独的线程来给系统时间来解决问题,这在最初解决了问题,但在进一步测试后意识到,如果用户想要停止我的服务,它将成为一个问题,因为线程仍将处于活动状态。并创建了一个bug

如果是这样的话,有没有办法知道硬盘什么时候稳定下来(启动完成)才能启动进程

你所描述的或多或少是为了什么

我知道有延迟启动。。。但它并不那么可靠,有了它,我的服务有时会正确启动,而在其他情况下则不会。因为它依赖VirtualBox或HD进行设置

哎呀。这听起来好像你真的不想等待硬盘解决-你想等待VirtualBox完成一些事情。当Windows启动所有延迟启动服务时,VirtualBox有时已经完成了工作,有时还没有完成。所以,这是行不通的

打开服务的属性表,然后单击“依赖项”选项卡。你可能没有列出任何东西。现在,打开“传真”服务,并转到该选项卡。您将看到此服务依赖于“电话”服务。有道理

Windows的问题与您的问题相同-一些服务依赖于其他服务,Windows需要确保一切都按正确的顺序完成。你也应该这样做。希望您可以等待VirtualBox服务。如果可以,请将服务安装程序设置为:

此列是系统在此服务之前必须启动的服务或加载顺序组的名称列表。列表中的名称之间用null分隔。如果服务没有依赖项,则指定Null或空字符串。使用语法[~]插入空值。对组的依赖性意味着,如果在尝试启动组的所有成员后,至少有一个组成员正在运行,则此服务可以运行

您的安装程序可能会自动执行此过程


或者,更手动地,您可以在Start()方法中等待磁盘上发生的事情。例如,如果您正在等待创建文件,请查看该文件,并在创建文件时通知您。

如果设置了windows启动,则在手动启动服务时,您可以使用ServiceController在代码中或在服务的windows中执行此操作。msc管理单元控制台提示:在系统启动时自动启动。不久之后,由于启动延迟。如果你想了解更多细节,你能扩展你的问题吗?你遇到了什么问题?我理解这一点,也知道你提到的那些建议,但windows startup到底是什么?用户登录后?或者在Windows登录屏幕上?@MichaelPetrotta更新了更多信息。服务可以在登录屏幕出现之前启动,也可以在用户登录后继续。看(有点老了,是的)。谢谢,我明白了。这是有道理的。然而,我假设我已经安装了VirtualBox。如果我的最终用户还没有安装VirtualBox,他们先安装我的软件(我的服务),然后重新启动,让服务启动并尝试查找VirtualBox以完成安装,会发生什么情况?我相信您的服务将无法启动。这是合乎逻辑的部分。我想知道这是否会影响创业。但你绝对是对的。谢谢让我试试这个解决办法。