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;
}
Run Code Online (Sandbox Code Playgroud)
将服务实例注入到可能需要它的每个方法中是一种替代方法,但它很快就会变得混乱,并且与仅使用静态属性相比没有任何真正的优势.
| 归档时间: |
|
| 查看次数: |
7696 次 |
| 最近记录: |