[英]How to exit a Mono-service?
我正试图干净地退出我的单一服务。
我正在构建一个单一服务,为了使调试变得容易,我运行它:
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
来结束应用程序。 甚至无法重新启动该服务。
一旦我开始一个线程,如何干净地退出我的单一服务?
花了一段时间,但我终于找到了: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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.