在 C# 中写一些服务应用,属于控制台。在使用时遇到一个问题:“我想要在应用关闭时运行一些自定义操作,但是试了很多方法也没有搞定”,最终只能对监听控制台关闭函数了。
public partial class HttpTargetDetectionResults
{
public delegate bool ControlCtrlDelegate(int CtrlType);
[DllImport("kernel32.dll")]
private static extern bool SetConsoleCtrlHandler(ControlCtrlDelegate HandlerRoutine, bool Add);
private static ControlCtrlDelegate cancelHandler = new ControlCtrlDelegate(HandlerRoutine);
public static bool HandlerRoutine(int CtrlType)
{
switch (CtrlType)
{
case 0: //Ctrl+C 关闭
// 关闭控制台时进行的操作
break;
case 2: //按控制台关闭按钮 关闭
// 关闭控制台时进行的操作
break;
}
//Console.ReadLine();
return false;
}
public HttpTargetDetectionResults()
{
// 设置控制台关闭监控
SetConsoleCtrlHandler(cancelHandler, true);
//Console.ReadLine();
}
}