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

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

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

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

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

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

@R_502_323@

我已经“借用”了tophelf的功能设置的示例代码来说明一点:
HostFactory.Run(x =>                                 //1
    {
        x.Service<TownCrier>(s =>                        //2
        {
           s.ConstructUsing(name=> new TownCrier());     //3
           s.WhenStarted(tc => tc.Start());              //4
           s.WhenStopped(tc => tc.Stop());               //5
        });
        x.RunAsLocalSystem();                            //6

        x.SetDescription("Sample Topshelf Host");        //7
        x.SetDisplayName("Stuff");                       //8
        x.SetServiceName("stuff");                       //9
    });

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

猜你在找的C#相关文章