描述:用户多次快速开启WPF程序的时候 只运行起来 一个 程序(exe) 其他多开的 进程 自动关闭掉
App.xaml.cs文件
1 protected override void OnStartup(StartupEventArgs e) 2 { 3 //当前运行WPF程序的进程实例 4 Process process = Process.GetCurrentProcess(); 5 //遍历WPF程序的同名进程组 6 foreach (Process p in Process.GetProcessesByName(process.ProcessName)) 7 { 8 //不是同一进程并且本进程启动时间最晚,则关闭较早进程 9 if (p.Id != process.Id && (p.StartTime - process.StartTime).TotalMilliseconds <= 0) 10 { 11 p.Kill();//这个地方用kill 而不用Shutdown();的原因是,Shutdown关闭程序在进程管理器里进程的释放有延迟不是马上关闭进程的 12 //Application.Current.Shutdown(); 13 //return;
//谢谢留言提醒, 此处 替换成 break 逻辑 更合理
break; 14 } 15 16 17 } 18 base.OnStartup(e); 19 }
最后说一句,,,,,,WPF的 资源释放托管 实在太烂了 各种内存泄漏问题 (#‵′)凸 还得自己写资源释放