当前位置:  开发笔记 > 编程语言 > 正文

如何从线程中停止Windows服务应用程序?

如何解决《如何从线程中停止Windows服务应用程序?》经验,为你挑选了1个好方法。

我有一个Windows服务,在OnStart方法中启动一个线程.

基本上我希望能够在出现问题时停止服务(如未处理的异常).

目前我正在使用ServiceBase.Stop()但涉及ServiceBase在线程可见的某个实例,这反过来涉及将我的实例声明为public static在主程序中.

是否有任何"更好的方法"来停止服务?如果不是......这样做是否安全?



1> Stephen Mart..:

最简单的,在我看来,最干净的方法是使用服务类的公共静态属性.唯一一次不起作用的是,如果您使用相同的服务类在同一个进程中运行多个服务,这是非常罕见的.

private static MyService m_ServiceInstance;

public static MyService ServiceInstance
{
    get { return m_ServiceInstance; }
}

public MyService()
{
    InitializeComponents();
    //Other initialization
    m_ServiceInstance = this;
}

将服务实例注入到可能需要它的每个方法中是一种替代方法,但它很快就会变得混乱,并且与仅使用静态属性相比没有任何真正的优势.

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有