VB.NET;Можно ли оптимизировать этот запрос WMI? - PullRequest
0 голосов
/ 26 мая 2018

Итак, мое приложение перебирает системные службы и получает различную информацию о них.Одним из них является 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.

...