我正在尝试为我的WPF应用程序处理命令行参数,我已做了以下更改
我已将输出类型转换为 - 控制台应用程序
评论了App.xaml中的StartupUri参数
并覆盖 protected override void OnStartup(StartupEventArgs e) {}
这是我的重写方法
public partial class App : Application
{
[DllImport("Kernel32.dll")]
public static extern bool AttachConsole(int processId);
[DllImport("Kernel32.dll")]
public static extern bool FreeConsole();
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
if (e.Args != null && e.Args.Length > 0)
{
ExecutionMethod.CommandLine = true;
ProcessCommandLineArgs.ProcessArgs(e.Args);
base.Shutdown();
}
else
{
FreeConsole();
ExecutionMethod.CommandLine = false;
TestApp WindowToDisplay = new TestApp();
WindowToDisplay.Show();
}
}
}
我能够处理参数并在控制台上显示结果。
但问题是
这个TestApp创建进程,比如P1,它执行一些命令,结果被重定向到控制台输出。 在P1完成之前,主进程由于以上重写方法中的base.Shutdown()而退出。
如何使这个base.shutdown等待Process P1完成。
任何链接/建议
此致
答案 0 :(得分:0)
我实际上正在等待新流程P1退出。
我同步主进程和进程P1。 只有当流程P1退出时才将ProceedForShutdwon设为true
while (ExecutionMethod.ProceedForShutDown == false)
{
mut.WaitOne(500); // wait for 500 ms
}
base.Shutdown();
我能够实现我的目标。
希望这也有助于其他人。