gpt4 book ai didi

c# - 如何以编程方式停止 Windows 服务

转载 作者:IT王子 更新时间:2023-10-29 04:43:23 24 4
gpt4 key购买 nike

关于编写 Windows 服务:如何停止我的 Windows 服务?

这是一个非常简化的示例代码(C#):

// Here is my service class (MyTestService.cs).
public class MyTestService:ServiceBase{

// Constructor.
public MyTestService(){
this.ServiceName = "My Test Service";
return;
}
};

// My application class (ApplicationClass.cs).
public static class ApplicationClass{

// Here is main Main() method.
public static void Main(){
// 1. Creating a service instance
// and running it using ServiceBase.
MyTestService service = new MyTestService();
ServiceBase.Run(service);
// 2. Performing a test shutdown of a service.
service.Stop();
Environment.Exit(0);
return;
};
};

所以:我刚刚创建了“我的测试服务”,启动它又停止了。但是,当我查看我的 Services.msc 时 - “我的测试服务”继续运行并仅在我单击“停止”链接时停止。为什么? - 为什么 service.Stop() 命令什么都不做?

ServiceController.Stop() 也什么都不做!

如何从 Main() 方法停止我的服务?

最佳答案

Stop 函数发送一个停止信号。它不会等到信号被接收和处理。

您必须等到停止信号完成它的工作。您可以通过调用 WaitForStatus 来做到这一点:

service.Stop();
service.WaitForStatus(ServiceControllerStatus.Stopped);

有关详细信息,请参阅:http://msdn.microsoft.com/nl-nl/library/system.serviceprocess.servicecontroller.waitforstatus(v=vs.71).aspx

Environment.Exit 是一个令人讨厌的问题。不要使用它!它以困难的方式中止您的应用程序,不在 finally block 中执行任何清理,不通过 GC 调用终结器方法,它终止所有其他前台线程等。我可以想象您的应用程序在停止信号离开您的应用程序之前就中止了.

关于c# - 如何以编程方式停止 Windows 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16317378/

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