如何获得关闭通过Process调用的应用程序的通知?

时间:2019-01-27 08:20:14

标签: c#

我想在计算器关闭时得到通知。以下代码不起作用;即使我尚未关闭计算器,也会出现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();
    }
}

1 个答案:

答案 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 等待进程结束的方式,通常它们不一起使用,您应该选择一个。