Bom dia pessoal.
Estou tentando utilizar a classe ManagementObjectSearcher para capturar informações sobre o computador local porém estou tendo problemas com o processo do WMI.
Quando executo a consulta, o processo do WMI inicia no gerenciador de tarefas, consome uma quantidade de memória e libera uma boa parte logo após a consulta, porém não libera toda a memória utilizada. Isso faz com que em cada execução, o processo consuma
mais e mais memória.
Além disso, após realizar a consulta o processo continua em execução. Mesmo depois de fechar minha aplicação, o processo continua lá.
Tentei várias dicas que encontrei na internet mas sem sucesso. Abaixo segue o último código que tentei utilizar na minha classe responsável por chamar a consulta WMI.
Como posso resolver esse problema.
OBS: Estou utilizando o framework 2.0 e preciso que seja ele.
Obrigado.
Imports System.Management
Imports System.Management.Instrumentation
Public Class WMIQuery
Private result As ArrayList = New ArrayList()
Private wmiObjSrc As ManagementObjectSearcher
Private wmiObjCol As ManagementObjectCollection
Private log As GoLog = New GoLog
Function Query(sql As String) As ArrayList
result.Clear()
wmiObjSrc = New ManagementObjectSearcher(sql)
Dim wmiMo As ManagementObject
wmiObjCol = wmiObjSrc.Get
For Each wmiMo In wmiObjCol
result.Add(wmiMo)
wmiMo = Nothing
Next
wmiMo = Nothing
wmiObjSrc.Dispose()
wmiObjCol.Dispose()
log = Nothing
GC.Collect()
Return result
End Function
End Class