Итак, мое приложение перебирает системные службы и получает различную информацию о них.Одним из них является 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
Теперь у меня есть это как собственная функция в моем основном приложении,не на кнопке (только для целей тестирования).
Это все работает, и я могу нормально пользоваться всеми услугами. Мне просто интересно, можно ли это оптимизировать?Для получения PID требуется около 17-20 мс, но в зависимости от того, сколько сервисов запущено, можно добавить до пары секунд.
Так что мне интересно, есть ли способ оптимизировать этот запрос?Спасибо.
Для всех, кому интересно, я получил этот бит кода из этого сообщения MSDN.