WPF应用程序+命令行参数

时间:2015-01-07 04:24:26

标签: wpf command-line

我正在尝试为我的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完成。

任何链接/建议

此致

1 个答案:

答案 0 :(得分:0)

我实际上正在等待新流程P1退出。

我同步主进程和进程P1。 只有当流程P1退出时才将ProceedForShutdwon设为true

while (ExecutionMethod.ProceedForShutDown == false)
{
       mut.WaitOne(500); // wait for 500 ms
}
base.Shutdown();

我能够实现我的目标。

希望这也有助于其他人。

相关问题