如何退出单一服务?

时间:2019-04-23 21:42:47

标签: c# service mono

我正试图彻底退出我的单一服务。

我正在构建单一服务,并且为了使调试更容易,我将其运行为:

mono-service --debug /etc/App.exe

这当然很棒,因为我在代码中输入的Console.WriteLine("...")会写到屏幕上。

我下一步要做的是在OnStart中添加新线程,因为这样一来,代码(服务)就永远不会被视为已启动。

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

虽然带有--debug标志,但控制台会写入工作,但永远不会退出。我只能发出kill -9来结束应用程序。该服务甚至无法重新启动。

启动线程后,如何彻底退出单服务?

1 个答案:

答案 0 :(得分:0)

花了一段时间,但我终于找到了:Console.IsOutputRedirected。 (.Net 4.5的一部分)

如果其他人找到此帖子,答案将是:

protected override void OnStart(string[] args)
{
    if(Console.IsOutputRedirected)
    {
        Thread serviceThread = new Thread(new ThreadStart(StartMyApplicationAsync));
        serviceThread.Start();
    } else {
        StartMyApplicationAsync();
    }
}

这样,当使用--debug开关测试应用程序时,它将响应/结束Ctrl + c