【发布时间】:2015-03-04 22:18:51
【问题描述】:
我正在尝试为我的 WPF 应用程序处理命令行参数,为此我做了以下更改
我已将输出类型转换为 - 控制台应用程序
注释了 App.xaml 中的 StartupUri 参数
并覆盖 受保护的覆盖无效 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 等待进程 P1 完成。
任何链接/建议
问候
【问题讨论】:
-
看看:stackoverflow.com/questions/426421/wpf-command-line。要等待该过程,您需要获取对该过程的引用,然后等待它。您可能需要发布 ProcessCommandLineArgs 的详细信息
-
感谢 Siva 和 Ray 的回复。
标签: wpf command-line