C# Windows服务主方法

14

我很好奇 Main() 方法在Windows服务中是如何与服务控制管理器相关联的。它何时被执行?它如何钩入操作系统?当一个服务被安装时它是否被执行?我知道它是在OnStart()被服务控制管理器调用时被执行,OnStop()则已经在运行,因此我们不需要再次执行它。

如果有人对这个领域非常了解并能够详细解释,我将不胜感激。

我是一位经验丰富的程序员,我不需要对Main方法在一般情况下的作用进行描述...只需要知道它如何与Windows服务配合工作即可。


你应该知道,main方法只是编译器用的“main”,因此与启动Windows服务无关。 - Roman Pokrovskij
1个回答

13
当您使用控制面板小程序告诉服务启动时,SCM将启动进程;这会导致Main()中的代码运行。在Main()方法中的ServiceBase.Run()行将相关服务挂钩到SCM中,然后SCM调用ServiceBase.Run()方法调用中指定的每个服务的OnStart()方法。

1
如果Main()抛出异常会发生什么?控制面板小程序是否会通知用户出现了错误? - PaulK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接