Jor*_*oba 8 .net c# multithreading windows-services
我有一个Windows服务,在OnStart方法中启动一个线程.
基本上我希望能够在出现问题时停止服务(如未处理的异常).
目前我正在使用ServiceBase.Stop()但涉及ServiceBase在线程可见的某个实例,这反过来涉及将我的实例声明为public static在主程序中.
是否有任何"更好的方法"来停止服务?如果不是......这样做是否安全?
Ste*_*tin 10
最简单的,在我看来,最干净的方法是使用服务类的公共静态属性.唯一一次不起作用的是,如果您使用相同的服务类在同一个进程中运行多个服务,这是非常罕见的.
private static MyService m_ServiceInstance;
public static MyService ServiceInstance
{
    get { return m_ServiceInstance; }
}
public MyService()
{
    InitializeComponents();
    //Other initialization
    m_ServiceInstance = this;
}
将服务实例注入到可能需要它的每个方法中是一种替代方法,但它很快就会变得混乱,并且与仅使用静态属性相比没有任何真正的优势.
| 归档时间: | 
 | 
| 查看次数: | 7696 次 | 
| 最近记录: |