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

RaiseaneventinC#whenanotherprocessexits分享

时间:2023-04-11 01:17:20 C#

RaiseaneventinC#whenanotherprocessexits不知道有没有人问过这个问题,但是我找不到任何内容,所以如果你可以找到一些东西,请指导我正确的方向。基本上,我想向我当前的C#程序添加一个事件,以便在另一个指定进程(“example.exe”)退出时引发。那可能吗?如果那不可能,那么,当直接路径(“C:\somefolderpaths...example.exe”)指定的进程退出时,是否有办法引发事件?补充一下:我的程序没有启动进程example.exe。如果你使用的是C#4.0,你可以这样做:进程退出后将运行的代码。);编辑如果您不是流程的创建者,则可以使用Process.GetProcessesByName函数从已存在的流程中检索流程。varprocess=Process.GetProcessesByName("process.exe");这样您就可以避免阻塞主线程并在外部进程退出时运行所需的代码。同时,继续做更重要的事情。即使您不是进程的所有者,也可以使用Exited事件。这段代码效果很好:varproc=Process.GetProcessesByName("notepad")[0];proc.EnableRaisingEvents=true;proc.Exited+=(s,e)=>{Console.Write("Done");};EnableRaisingEvents发生在.NET端,与进程创建无关——它与等待进程句柄发出信号有关。您可以使用任何等待句柄(并且进程也是等待句柄)来执行此操作,例如:varregistration=ThreadPool.RegisterWaitForSingleObject(waitHandle,callbackMethod,null,-1,true);您实际使用单独线程(来自线程池)的唯一时间是执行回调。等待时无需浪费线程。当然,如果要等待部分同步过程,还是可以调用WaitForExit,最好有超时时间。或者您可以围绕RegisteredWaitHandle创建一个简单的包装器并等待。以上就是C#学习教程:另一个进程退出时,C#中触发事件的全部内容分享给大家,如果对大家有用还需要详细了解C#学习教程,希望大家多多关注——这篇文章来自网络收藏,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: