C#:服务停止时关闭应用程序

时间:2015-07-27 23:15:58

标签: c# service

我在C#中开发了一个使用HttpListener的服务。 当我停止服务时,该过程暂时保持打开状态。 如果我重新启动服务,它会崩溃(可能是因为使用了端口)。

如何在服务停止时(通过网络停止)立即停止该过程,或者至少在我开始新服务之前等待该过程完成。

这是相关的代码段:

    protected override void OnStart(string[] args)
    {
        Thread thread = new Thread(new ThreadStart(Listen));
        thread.Start();
    }

    protected override void OnStop()
    {
        base.OnStop();
    }

1 个答案:

答案 0 :(得分:0)

您的OnStop方法需要采取一些停止Listen线程的操作。您可以通过以下几种方式实现此目的:

  • 将'thread'对象范围向上移动,以便您可以从OnStop“中止”该线程(这是一种不好的做法)
  • 无论是什么内容都需要以某种方式通知它应该停止'倾听'并退出其线程。最简单的方法是将一个“停止”变量设置为侦听线程查找的某个地方,但正如Scott正确地说,cancelToken更合适。另外,你需要在HttpListener上使用Stop()方法。