有时候,需要重启应用程序,比如某些配置参数改变等等,
public static class Application2
{
public static void RestartNoCommandLine()
{
ProcessStartInfo startInfo = Process.GetCurrentProcess().StartInfo;
startInfo.FileName = Application.ExecutablePath;
var exit = typeof(Application).GetMethod("ExitInternal",
System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.Static);
exit.Invoke(null, null);
Process.Start(startInfo);
}
}
代码分析
ProcessStartInfo 设置:
Process.GetCurrentProcess().StartInfo 获取当前进程的启动信息。
startInfo.FileName = Application.ExecutablePath 设置启动的文件路径为当前应用程序的可执行文件路径。
反射调用 ExitInternal:
使用反射调用 Application.ExitInternal 方法,这是一个内部方法,用于强制退出应用程序。
BindingFlags.NonPublic | BindingFlags.Static 用于访问非公开的静态方法。
启动新进程:
Process.Start(startInfo) 启动一个新的进程来重新运行应用程序。
潜