繁体   English   中英

处理kill事件C#

[英]Process on kill event C#

我正在使用C#WPF。
我有使用Start()命令运行它们的Process列表。
我想知道用户何时退出进程并捕获事件。
我尝试过的:

myProcess.StartInfo.FileName = fileName;
myProcess.EnableRaisingEvents = true;
myProcess.Exited += new EventHandler(myProcess_Exited);
myProcess.Start();

* myProcess是Process对象。
问题是在Start()命令后立即关闭应用程序并myProcess_Exited回调。
我的错误在哪里?

这种行为的唯一原因是,你开始的exe是在启动之后直接关闭或者直接关闭。 例如,如果exe是一个没有任何用户输入或其他东西的console应用程序。 使用Notepad.exe尝试您的代码,你会发现它的工作原理。

看一下这个IronPython代码,它主要是.net代码作为你的应用程序(只是更容易用于测试目的):

来自System.Diagnostics导入过程

def on_exit(s, e):
    print ('Exited')

process = Process()
process.StartInfo.FileName = "C:\\Windows\\System32\\notepad.exe"
process.EnableRaisingEvents = True
process.Exited += on_exit;
process.Start()

如果我关闭记事本,则调用退出。

编辑

如果您想检测哪个应用程序已关闭/退出,只需将您的sender对象设置为Process并通过StartInfo访问它的FileName 例如:

private void OnExited(object sender, EventArgs, e)
{
    var process = (sender as Process);
    Console.WriteLine(process.StartInfo.FileName);
}

希望这可以帮助。

myProcess.StartInfo.FileName = fileName;
myProcess.EnableRaisingEvents = true;
myProcess.Exited += new EventHandler(myProcess_Exited);
myProcess.Start();
myProcess.WaitForExit();

要么,

myProcess.WaitForExit(timeout);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM