我想在计算器关闭时得到通知。以下代码不起作用;即使我尚未关闭计算器,也会出现Exited
。我必须写什么修改?
static void Main()
{
using (Process p = new Process())
{
p.StartInfo.FileName = "calc.exe";
p.EnableRaisingEvents = true;
p.Exited += (x, y) => Console.WriteLine("Exited");
p.Start();
p.WaitForExit();
}
}
答案 0 :(得分:4)
您使用的是Winsows 10,计算器是UWP应用,应该以应用url 开头: Launching a Windows 10 Store app from C# executable
我敢打赌,Microsoft编码人员创建了kludge以允许通过与以前的Windows版本相同的方式运行UWP计算器,以保持向后兼容性,因此很可能某些 proxy 进程运行UWP计算器并结束立即,所以您会有意想不到的行为。
另外p.WaitForExit()
用作 sync ,而p.Exited
用作 async 等待进程结束的方式,通常它们不一起使用,您应该选择一个。