C#中Process.GetProcessesByName的问题

来源:百度知道 编辑:UC知道 时间:2024/09/28 14:33:51
初学C#,向各位高手请教如下问题:
为什么我在执行Application.Restart();后,再用Process.GetProcessesByName("ProgName")得到两个对象,而不是一个?
请高手指教!多谢!
为了保证同时只有一个程序运行加了一些相关代码.现在想实现重新登录的功能,直接用了一句Application.Restart()重启程序以转向登录窗口,可是转向时却出现了"该程序正在运行,双击右下角托盘即可显示!"的提示,不知是何原因.
经过输出显示,Process.GetProcessesByName("ProgName")在Application.Restart();执行后存在两个不同Id的Process.
另:如果不用这种方法,还有别的更好的办法吗?请高手不吝赐教!

再这两个语句之间加一个显式的回收

System.GC.Collect();

一般来讲这是可以实现的。

除非你的程序中本身就有两个同名进程。

有重名的进程,或许你Restart还没立刻结束掉该进程,

Application.Restart();
Process.GetProcessesByName("ProgName")
两个没关系的
Process.GetProcessesByName("ProgName")反回的就是个数组
进程里名字不是唯一的呀