我正试图干净利落地退出我的单一服务。
我正在构建一个单服务,为了使调试变得容易,我运行它如下:
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来结束应用程序。该服务甚至不能重新启动。
如何在启动线程后干净利落地退出我的单一服务?
发布于 2019-05-22 19:02:47
花了一段时间,但我终于找到了: 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
https://stackoverflow.com/questions/55819825
复制相似问题