我有一个控制台应用程序;下面的代码块是执行的主要部分:
this.service.Start(args);
Console.WriteLine("Service started; press any key to kill.");
Console.WriteLine();
Console.Read();
this.service.Cease();
此处的关键是在控制台窗口中按下某个键后服务将关闭。但是,如果控制台窗口使用窗口右上角的红色X'x'd,则永远不会调用this.service.Cease()
。
我尝试连接到AppDomain.CurrentDomain.ProcessExit
,但似乎没有用。有没有其他选择,还是我被卡住了?
答案 0 :(得分:0)
我听说你可以显示一个隐藏的窗口并使用它的退出消息,但除此之外你就被卡住了。您可以使Ctrl + C和Ctrl + Break正常工作:
using (var waiter = new ManualResetEventSlim())
{
Console.TreatControlCAsInput = false;
Console.CancelKeyPress += (sender, eventArgs) => { waiter.Set(); eventArgs.Cancel = false; };
Console.WriteLine(@"Press Ctrl+C or Ctrl+Break for a clean exit...");
waiter.Wait();
Console.WriteLine("Exiting...");
}