c# – 如何捕获异常并停止Topshelf服务?

前端之家收集整理的这篇文章主要介绍了c# – 如何捕获异常并停止Topshelf服务?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_404_0@
我有一个tophelf windows服务,我想做一些检查(即如果一个xml文件存在),如果检查失败,我需要 Windows服务停止.

所以我尝试在Start()方法中进行检查,然后引发异常:

  1. public void Start()
  2. {
  3. if (!File.Exists(_xmlFile) throw new FileNotFoundException();
  4. // Do some work here if xml file exists.
  5. }

但是,Windows服务作为异常之后的进程保持不变,然后我必须在任务管理器中手动杀死.

如果某些条件(即找不到文件)成立,是否有办法运行该服务?

解决方法

我已经“借用”了tophelf的功能设置的示例代码来说明一点:
  1. HostFactory.Run(x => //1
  2. {
  3. x.Service<TownCrier>(s => //2
  4. {
  5. s.ConstructUsing(name=> new TownCrier()); //3
  6. s.WhenStarted(tc => tc.Start()); //4
  7. s.WhenStopped(tc => tc.Stop()); //5
  8. });
  9. x.RunAsLocalSystem(); //6
  10.  
  11. x.SetDescription("Sample Topshelf Host"); //7
  12. x.SetDisplayName("Stuff"); //8
  13. x.SetServiceName("stuff"); //9
  14. });

在上述代码运行之前,您将不得不放置文件系统检查.让我们再想一下吧.服务的一个重点就是确保它能够运行RUNS和KEEPS.您试图颠覆首先提供服务应用程序的基本原则.而不是试图停止服务,因为丢失的文件,找出一些方式来提醒你的支持人员,而不是做任何取决于那个丢失的文件.

猜你在找的C#相关文章