如何退出单一服务?
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 的一部分)
如果其他人找到这个 post,答案将是:
protected override void OnStart(string[] args)
{
if(Console.IsOutputRedirected)
{
Thread serviceThread = new Thread(new ThreadStart(StartMyApplicationAsync));
serviceThread.Start();
} else {
StartMyApplicationAsync();
}
}
这样当使用 --debug
开关测试应用程序时,它会 respond/end 到 Ctrl+c
我正在尝试完全退出我的单一服务。
我正在构建单一服务,为了便于调试,我 运行 如下:
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 的一部分)
如果其他人找到这个 post,答案将是:
protected override void OnStart(string[] args)
{
if(Console.IsOutputRedirected)
{
Thread serviceThread = new Thread(new ThreadStart(StartMyApplicationAsync));
serviceThread.Start();
} else {
StartMyApplicationAsync();
}
}
这样当使用 --debug
开关测试应用程序时,它会 respond/end 到 Ctrl+c