Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获得关闭通过进程调用的应用程序的通知?_C# - Fatal编程技术网

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

C# 如何获得关闭通过进程调用的应用程序的通知?,c#,C#,我想在计算器关闭时得到通知。以下代码不起作用;即使我没有关闭计算器,退出也会出现。我必须写什么修改 static void Main() { using (Process p = new Process()) { p.StartInfo.FileName = "calc.exe"; p.EnableRaisingEvents = true; p.Exited += (x, y) => Console.WriteLine("Ex

我想在计算器关闭时得到通知。以下代码不起作用;即使我没有关闭计算器,
退出
也会出现。我必须写什么修改

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();
    }
}

您使用的是Winsows 10,calculator是那里的UWP应用程序,通常应以应用程序url启动:

我敢打赌,微软的编码人员创建了kludge,允许以与以前Windows版本相同的方式运行UWP calculator,以保持向后兼容性,因此,很可能某些代理进程运行UWP calculator并立即结束,因此您会出现意外行为


另外,
p.WaitForExit()
用作同步,而
p.Exited
用作等待进程结束的异步方式,通常它们不一起使用,您应该选择一种。

不确定这是否与“calc.exe”有关,或者可能是因为您已经在运行它。运行“notepad.exe”时是否得到相同的结果?@AnuViswan:是的,使用notepad时得到相同的结果。有趣的是,对我来说,它对notepad有效,而对calc无效。exe@ArtificialStupidity您使用的是什么Windows版本?10和calculator是UWP应用程序吗?@AnuViswan+1在我的Win10 x64 Prot上相同
mspaint.ext
,是UWP吗?@artificialstupity
mspaint.exe
对我来说工作正常,但是
退出
事件被触发了两次。。。正如我们所知,它最初不是一个UWP应用程序,但您也可以阅读以下内容:我们只能猜测mincer
mspaint
将迁移到store。。。它可能是UWP容器中的遗留应用程序,例如lol。。。我无法解释微软的魔力,但我认为那里发生了一些不可思议的事情:)