如何关闭退出并重新启动程序

我有一个程序,我检查是否有一个实例正在运行,如果有一个实例正在运行,它应该终止正在运行的程序并运行我的应用程序..在我只是提示用户有一个正在运行的实例并关闭之前程序。现在,用户希望程序仅终止该实例并启动应用程序。


if (Process.GetProcessesByName(Path.GetFileNameWithoutExtension(Assembly.GetEntryAssembly().Location)).Length > 1)

{

 //MessageBox.Show("Another instance of the Program is Running", Global.ProgName, MessageBoxButton.OK, MessageBoxImage.Information);

 //Environment.Exit(0);

 foreach (var process in Process.GetProcessesByName(Path.GetFileNameWithoutExtension(Assembly.GetEntryAssembly().Location)))

 {

    process.Kill();

 }

 Process.Start(Path.GetFileName(Assembly.GetEntryAssembly().Location));

}


肥皂起泡泡
浏览 117回答 2
2回答

摇曳的蔷薇

if(Process.GetProcessesByName(System.IO.Path.GetFileNameWithoutExtension(Assembly.GetEntryAssembly().Location)).Length > 1){    foreach (var process in Process.GetProcessesByName(System.IO.Path.GetFileNameWithoutExtension(Assembly.GetEntryAssembly().Location)))    {        if (process.Id != Process.GetCurrentProcess().Id)        {            process.Kill();        }    }}这段代码获取与你的同名的进程并杀死旧的进程,新的进程是杀手进程。

慕少森

它并不干净,但您可以使用 shell 命令:ProcessStartInfo Info = new ProcessStartInfo();Info.Arguments = "/C ping 127.0.0.1 -n 4 && cd \"" + Application.StartupPath + "\" &&  filename.exe";Info.WindowStyle = ProcessWindowStyle.Hidden;Info.CreateNoWindow = true;Info.FileName = "cmd.exe";System.Timers.Timer t = new System.Timers.Timer(1000);t.Elapsed += T_Elapsed;t.Start();Process.Start(Info);private void T_Elapsed(object sender, ElapsedEventArgs e){    Application.Exit();}shell 命令 ping localhost 4 次以打发时间,在这些 ping 期间,程序退出。程序退出后,原来的 shell 命令仍在运行,因此 ping 后程序会重新打开。
打开App,查看更多内容
随时随地看视频慕课网APP