C#:如何在程序退出后运行批处理(在此期间不调用)

m-y*_*m-y 4 c# wpf process batch-file

我有以下设置:

MainApp.exe检查更新,下载最新更新.问题是有时更新是MainApp.exe当前使用的DLL.因此,我想可能只是将所有文件转储到Update(temp)文件夹中,当程序退出时运行批处理文件,覆盖DLL然后重新启动程序.这很常见,我已经看到它已经完成(例如Spybot Search and Destroy).

我的问题是你如何使程序在退出后运行一个过程?

或者,可以在程序期间调用批处理程序,但是等到程序关闭后再启动它的实际批处理?

哦,我怀疑这在WPF应用程序中会有什么不同,但是如果它是......我正在编写我的应用程序作为WPF应用程序.

PS我认为在Unix中类似的是Forking Exec?

P D*_*ddy 8

在第一个应用中,将第二个应用传递给您的进程ID:

using System.Diagnostics;

static void Main(){
    /* perform main processing */
    Process.Start("secondapp.exe", Process.GetCurrentProcess().Id.ToString());
}
Run Code Online (Sandbox Code Playgroud)

在子进程中,等待第一个退出:

using System.Diagnostics;

static void Main(string[] args){
    Process.GetProcessById(int.Parse(args[0])).WaitForExit();
    /* perform main processing */
}
Run Code Online (Sandbox Code Playgroud)