C# 调用控制台应用程序

C# 调用控制台应用程序,c#,wpf,console-application,C#,Wpf,Console Application,在WPF中调用控制台应用程序的代码是什么?我有一个WPF应用程序,您需要: 调用控制台应用程序 控制台应用程序关闭WPF 控制台应用程序再次调用WPF并关闭控制台应用程序 这是必要的,因为我正在执行一个系统,其中应用程序的更新必须关闭要复制的文件 对于关闭应用程序WPF,我使用以下方法: Process wpfProc = Process.GetProcessesByName("MainWindow.exe").First(); wpfProc.Kill(); Process wpfProc

在WPF中调用控制台应用程序的代码是什么?我有一个WPF应用程序,您需要:

  • 调用控制台应用程序
  • 控制台应用程序关闭WPF
  • 控制台应用程序再次调用WPF并关闭控制台应用程序
  • 这是必要的,因为我正在执行一个系统,其中应用程序的更新必须关闭要复制的文件

    对于关闭应用程序WPF,我使用以下方法:

    Process wpfProc = Process.GetProcessesByName("MainWindow.exe").First();
    wpfProc.Kill();
    
    Process wpfProc = Process.GetProcessesByName("MainWindow").First();
    
    返回控制台应用程序:

    Unhandled Exception: System.InvalidOperationException: Sequence sontains no elements
        at System.Link.Enumerable.First[TSource]<IEnumerable'1 source>
        at Updater.Program.Main<String[] args> in d:\endereçodoUpdater\Program.cs:line 17
    

    如何解决此问题?

    您可以使用流程来解决此问题。开始:

    Process myProc = Process.Start("MyConsoleApp.exe");
    
    //Close gracefully
    Application.Exit();
    
    在MyConsoleApp.exe中,您需要使用GetProcessByName终止WPF应用程序,然后进行处理。重新启动以重新启动:

    Process wpfProc = Process.GetProcessesByName("MyWpfApp.exe").First();
    
    //If you want to directly kill it
    wpfProc.Kill();
    
    //Or be nice and let it kill itself
    wpfProc.WaitForExit();
    
    //Do stuff
    Process.Start("MyWpfApp.exe");
    

    应用程序更新时的System.Diagnostics.Process

    -不要尝试重新发明轮子。使用ClickOnce。我感谢您的帮助。由于某些特殊原因,无法使用ClickOnce。我需要为一个特定的应用程序创建一个项目更新,其中主应用程序应该关闭,因为一些文件被复制到安装目录。在主应用程序重新打开后不久,我已经编写了很多安装程序,其中ClickOnce不是一个选项,需要做一些非常类似的事情。Eww。无需
    终止
    ,只需等待进程启动,然后结束应用程序。在控制台中,等待另一个未运行。可能也很有用,以防你们不想仅仅终止应用程序,而是想以某种聪明的方式来完成它。@crashmstr,被编辑为包含一种“更好”的方式。OP要求控制台应用程序直接杀死WPF应用程序(我同意等待退出是一个更好的方法)@LordTakkera我不认为他们真的有这样做的想法,这更多的是一个需要发生什么的“流程”(即WPF应用程序通过某种方式关闭)。但我现在愿意投票:)