C# 启动控制台应用程序作为新进程隐藏窗口

C# 启动控制台应用程序作为新进程隐藏窗口,c#,.net,wpf,console-application,C#,.net,Wpf,Console Application,我正在尝试创建一个自修补应用程序,如下所示: .Net WPF应用程序确定是否存在新版本(自身) 此WPF应用程序启动.Net控制台应用程序(process.Start)以执行必要的操作 然后控制台应用程序执行一些任务并启动新版本的.Net WPF应用程序(process.Start) 所有这些都可以正常工作,也就是说,我可以看到进程按要求启动,但是当控制台应用程序启动WPF应用程序的新实例时,没有可见的窗口-从用户的角度看,似乎没有加载任何内容 我需要用这样的方法考虑任何缺陷——使用控制台应用

我正在尝试创建一个自修补应用程序,如下所示:

  • .Net WPF应用程序确定是否存在新版本(自身)
  • 此WPF应用程序启动.Net控制台应用程序(process.Start)以执行必要的操作
  • 然后控制台应用程序执行一些任务并启动新版本的.Net WPF应用程序(process.Start)
  • 所有这些都可以正常工作,也就是说,我可以看到进程按要求启动,但是当控制台应用程序启动WPF应用程序的新实例时,没有可见的窗口-从用户的角度看,似乎没有加载任何内容

    我需要用这样的方法考虑任何缺陷——使用控制台应用程序重新启动基于Windows的UI?< /P> 启动控制台的代码(控制台端相同,再次启动WPF应用程序)


    控制台应用程序无法使用此选项显示。

    可能会帮助您显示控制台。然后添加Console.ReadLine()将保持窗口打开。

    好的,我的错误-错过了拼图中最关键的部分

    它是一个Windows服务,执行实际的
    过程。Start
    调用,即原始WPF应用程序对该服务执行调用,该服务启动控制台应用程序(然后最终重新启动WPF应用程序)

    因此,很清楚问题是什么: Windows服务不会与桌面交互,因此尽管进程实际启动,但不会显示任何窗口

    在阅读了以下文章后,我了解了这一点:

    控制台应用程序是否可见?如果您需要适当的帮助,请向我们展示您的代码(例如,启动另一个流程的代码行)!
    var info = new ProcessStartInfo(commandFileName) 
    { 
        Arguments = args 
    } 
    Process.Start(info);