为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
肥皂起泡泡 2023-12-17 10:50:06
我有一个程序,我检查是否有一个实例正在运行,如果有一个实例正在运行,它应该终止正在运行的程序并运行我的应用程序..在我只是提示用户有一个正在运行的实例并关闭之前程序。现在,用户希望程序仅终止该实例并启动应用程序。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));}
查看完整描述

2 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

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();

        }

    }

}

这段代码获取与你的同名的进程并杀死旧的进程,新的进程是杀手进程。


查看完整回答
反对 回复 2023-12-17
?
慕少森

TA贡献2019条经验 获得超9个赞

它并不干净,但您可以使用 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 后程序会重新打开。


查看完整回答
反对 回复 2023-12-17
  • 2 回答
  • 0 关注
  • 116 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信