杀死以前运行的实例,但不是当前运行的实例

时间:2015-09-22 01:02:51

标签: vb.net winforms process

我使用VB.NET,我需要关闭(或杀死)以前的所有运行 程序...并且只保留最近的运行。

如何?这很接近......但它会杀死所有人。

Dim thisRun As System.Diagnostics.Process = System.Diagnostics.Process.GetCurrentProcess(
Dim pList() As System.Diagnostics.Process = System.Diagnostics.Process.GetProcessesByName("MyPrg.exe")

For Each eachRun As System.Diagnostics.Process In pList
    If (Not thisRun.Equals(eachRun)) Then eachRun.Kill() ' Kill all other runs, but not this current one
Next eachRun

1 个答案:

答案 0 :(得分:1)

而不是:

If (Not thisRun.Equals(eachRun)) Then eachRun.Kill() 

尝试:

 If (Not thisRun.Id = eachRun.Id) Then eachRun.Kill() 

此处的Equals运算符尝试将当前进程的实例与其他进程匹配,这些进程在单独的AppDomain中永远不会匹配,直到在具有不同实现的Process类中覆盖.Equals方法。您应该按Process.Id

匹配它们