我正试图彻底退出我的单一服务。
我正在构建单一服务,并且为了使调试更容易,我将其运行为:
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
来结束应用程序。该服务甚至无法重新启动。
启动线程后,如何彻底退出单服务?
答案 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