当前位置: 首页 > 编程语言 > C#

在控制台应用程序中捕获ctrl+c事件(多线程)分享

时间:2023-04-11 02:58:03 C#

在控制台应用程序中捕获ctrl+c事件(多线程)privatestaticMyExternalProcessp1;私有静态MyExternalProcessp2;私有静态MyExternalProcessp3;publicvoidMain(){p1=newMyExternalProcess();p2=newMyExternalProcess();p3=newMyExternalProcess();p1.startProcess();p2.startProcess();p3.startProcess();}publicstaticvoidkillEveryoneOnExit(){p1.kill();p2.kill();p3.kill();}classMyExternalProcess{privateProcessp;...publicvoidstartProces(){//做一些事情PlayerProcess=newProcess();....PlayerProcess.Start();//做一些事情}publicvoidkill(){//做一些事情p.Kill();我需要做的是:当主线程被中断(退出按钮或ctrl+c)时,其他进程应该被杀死。如何在CTRL+C或Exit(X)按钮上触发我的方法killEveryoneOnExit?根据您的问题,您需要捕获两个事件。如果你把这两个放在你的例子中,你会得到这样的东西:staticConsoleEventDelegatehandler;私人委托boolConsoleEventDelegate(inteventType);[DllImport("kernel32.dll",SetLastError=true)]privatestaticexternboolSetConsoleCtrlHandler(ConsoleEventDelegatecallback,booladd);私有静态MyExternalProcessp1;publicstaticvoidMain(){Console.CancelKeyPress+=delegate{killEveryoneOnExit();};handler=newConsoleEventDelegate(ConsoleEventCallback);SetConsoleCtrlHandler(处理程序,真);p1=newMyExternalProcess();p1.startProcess();}publicstaticvoidkillEveryoneOnExit(){p1.kill();}staticboolConsoleEventCallback(inteventType){if(eventType==2){killEveryoneOnExit();}返回假;}对于一个工作的ctrlc(fun)粘贴例子:http://pastebin.com/6VV4JKPY以上就是C#学习教程:在控制台应用程序中捕获ctrl+c事件(多线程)的分享,如果为真大家有用也需要了解有关C#学习教程的更多信息。希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: