【发布时间】:2017-01-30 22:41:43
【问题描述】:
我有一个 topshelf windows 服务,我想在其中进行一些检查(即是否存在 xml 文件),如果检查失败,我需要停止 windows 服务。
所以我尝试在 Start() 方法中进行检查,然后引发异常:
public void Start()
{
if (!File.Exists(_xmlFile) throw new FileNotFoundException();
// Do some work here if xml file exists.
}
但是,Windows 服务在异常之后作为一个进程保留,然后我必须在任务管理器中手动终止。
如果某些条件(即未找到文件)成立,有没有办法不运行服务?
【问题讨论】:
-
你为什么抛出一个异常而没有任何东西可以捕获它?
-
另外你不需要抛出
FileNotFoundExceptionclr 会为你做的。 -
我正在尝试让 Windows 服务在出现异常时停止运行,并希望 topshelf 能够停止它。
-
你是如何启动服务的?我从一个旧项目中找到了一个 topshelf 服务示例,它使用 HostFactory 来启动服务
-
@JD 重点是通过显式抛出异常你什么也得不到。如果文件不存在,CLR 将为您抛出 FileNotFound 异常。