我正在使用 C# WPF。
我有进程列表,我使用 Start()
命令运行它们。
我想知道用户何时退出进程并捕获事件。
我尝试了什么:
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()
如果我关闭记事本,将调用 Exit。
编辑
如果您想检测哪个应用已关闭/退出,只需将您的sender
对象放入Process
并通过 访问它的
。例如:FileName
>开始信息
private void OnExited(object sender, EventArgs, e)
{
var process = (sender as Process);
Console.WriteLine(process.StartInfo.FileName);
}
希望这对您有所帮助。
关于c# - 处理终止事件 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35272927/