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();
}
}
}
这段代码获取与你的同名的进程并杀死旧的进程,新的进程是杀手进程。
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 后程序会重新打开。
- 2 回答
- 0 关注
- 116 浏览
添加回答
举报