我需要知道两个进程中是否至少有一个正在运行,让我们调用它们" process1"和" process2"。不需要知道哪一个正在运行。 我想知道代码更快,资源影响更小。
实际上我正在使用:
Dim RunningProcesses() As Process
Dim IsRunning As Boolean = False
RunningProcesses = Process.GetProcessesByName("process1")
If RunningProcesses.Count > 1 Then
IsRunning = True
End If
RunningProcesses = Process.GetProcessesByName("process2")
If RunningProcesses.Count > 1 Then
IsRunning = True
End If
感谢您的帮助!
答案 0 :(得分:0)
如果您想要一个可以传递进程名称的函数,可以执行类似
的操作Imports System.Diagnostics
Module Module1
Function IsAnyProcessRunning(procNames As List(Of String)) As Boolean
Return Process.GetProcesses.Any(Function(proc) procNames.Any(Function(n) String.Compare(n, proc.ProcessName, StringComparison.InvariantCultureIgnoreCase) = 0))
End Function
Sub Main()
Dim procs As New List(Of String) From {"devenv", "Firefox"}
Console.WriteLine(IsAnyProcessRunning(procs))
Console.ReadLine()
End Sub
End Module
我这样做是为了让进程名称不区分大小写,因为我发现“Firefox”在进程名称中实际上是“firefox”。
答案 1 :(得分:-1)
Dim IsRunning As Boolean = False
If Process.GetProcessesByName("process1").Count > 0 Then
IsRunning = True
else
If Process.GetProcessesByName("process2").Count > 0 Then
IsRunning = True
End If
End If
这样,如果第一次检查已经发送,则不进行第二次检查。而IMO必须是Count> 0 ...哦,并没有测试它,只是出于我的想法