等待进程退出时阻止事件

问题描述 投票:0回答:4

我有一个Windows C#应用程序app1,其中通过单击一个按钮,并使用:]启动另一个应用程序app2。

var myProc = Process.Start("app2.exe", myArgs);
myProc.WaitForExit();//to wait I finish with app2.exe

这很好用,但是在打开app2时出现两个问题:

  1. 如果我单击任务栏中的app1图标,则app1进入正常状态,而app2进入背景。
  2. 如果我单击app1中的按钮,则app2完成后,将执行相应的操作。因此,app1将我单击的按钮保存在内存中,然后执行之后的所有操作。
  3. 因此,即使我单击了app1图标,如何仍将app2放在前面(我不确定app1和app2是完全不同的应用程序)?

对我来说更重要的是,当打开app2时,如何使app1不响应/不保留内存事件?

我有一个Windows C#应用程序app1,通过单击以下按钮来启动另一个应用程序app2:var myProc = Process.Start(“ app2.exe”,myArgs); myProc.WaitForExit(); //等待我...

c# events process wait exit
4个回答
0
投票

一种解决方案是,在子进程正在运行的情况下,禁用第一个应用程序的所有窗口。另外,您可以将应用程序的主窗口设置为子应用程序打开的窗口的所有者(子应用程序应显示任何窗口)。


0
投票

您可以使用


0
投票

按照Dirk Vollmar的建议禁用表单,但在禁用队列时,也可以对Task.Run()使用async / await来泵送队列。这将导致应用程序在禁用表单时丢弃所有用户输入,而不是在再次启用表单后对其进行排队和处理:


0
投票

您必须在另一个任务中创建它

© www.soinside.com 2019 - 2024. All rights reserved.