1
我在控制台应用程序中实现窗口服务,如下:ServiceBase.Run未执行后,控制台应用程序代码中的C#windows服务?
internal class Program
{
private static void Main(string[] args)
{
ServiceBase.Run(new MyServicesInitializer()); //host the services in managed windows service
//some more code
string x=1;
.....
}
public class MyServicesInitializer : ServiceBase
{
protected override void OnStart(string[] args)
{
//my code
}
}
我的问题是:当我开始SC.EXE服务做的主要方法是叫什么名字?它似乎不是......如果有人可以解释流量当我开始服务与sc时发生了什么,为什么我需要该行:ServiceBase.Run(new MyServicesInitializer());在我的主要?
编辑:我做了实验,并在主要行的前后抛出异常:当我抛出异常之前抛出的异常但当我把异常后,运行方法不抛出,服务开始成功...有人可以解释为什么Run方法之后的代码没有执行?
我不会指望这一点,因为它是无证的行为。更安全地假设你可以在main函数中做的唯一事情就是调用'ServiceBase.Run'。 –
但我实现了两种模式:用于开发的控制台模式和用于生产的Windows服务模式......但重要的是要知道,当服务在执行后停止代码...在我的情况下,函数ServiceBase.Run我添加了return语句。 –