因此,我的应用程序遍历系统服务,并获取有关它们的各种信息。其中一个是PID,我使用以下代码获取(添加一个按钮,并引用System.Management):
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim myStopWatch As New Stopwatch
myStopWatch.Start()
Dim processId As UInteger = 0
Dim strService As String = "BITS"
Dim qry As String = "SELECT PROCESSID FROM WIN32_SERVICE WHERE NAME = '" & strService & "'"
Dim searcher As System.Management.ManagementObjectSearcher = New System.Management.ManagementObjectSearcher(qry)
For Each mngntObj As System.Management.ManagementObject In searcher.[Get]()
processId = CUInt(mngntObj("PROCESSID"))
Next
myStopWatch.Stop()
MessageBox.Show("ID: " & processId.ToString & vbNewLine & myStopWatch.ElapsedMilliseconds.ToString)
End Sub
现在我在我的主应用程序中拥有它自己的功能,而不是按钮(仅用于测试目的)。
这一切都有效,我可以通过服务一切都很好我只是好奇,如果这可以优化了吗?这需要大约17-20ms才能获得PID,但根据运行的服务数量,最多可以增加几秒钟。
所以我很好奇,无论如何都要优化这个查询? 感谢。
对于任何想知道的人,我收到了这段代码from this msdn post.