gpt4 book ai didi

ServiceBase.Run 未执行后控制台应用程序代码中的 C# Windows 服务?

转载 作者:太空宇宙 更新时间:2023-11-03 23:47:58 26 4
gpt4 key购买 nike

我在控制台应用程序中实现了 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 启动服务时,是否调用了 main 方法?似乎不是...如果有人可以解释流程当我用 sc 启动服务时发生了什么,以及出于什么原因我需要这条线:ServiceBase.Run(new MyServicesInitializer()); 在我的主要?

编辑:我在 main 中的行之前和之后做了实验并抛出异常:当我在抛出异常之前抛出异常时 但是 当我将异常放在 run 方法之后时它不会抛出并且服务启动成功...有人能解释一下为什么Run方法后面的代码没有执行吗?

最佳答案

我设法弄清楚发生了什么,流程如下:当函数 ServiceBase.Run(new MyServicesInitializer()); 被调用时,代码不会从此函数返回,直到服务被停止,因此它之后的代码将只运行服务停止后!

关于ServiceBase.Run 未执行后控制台应用程序代码中的 C# Windows 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26955259/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com