none
ManagementObjectSearcher - Processo WMI continua em execução e consumindo cada vez mais memória RRS feed

  • Pergunta

  • 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


    • Editado physyx segunda-feira, 10 de novembro de 2014 11:43
    segunda-feira, 10 de novembro de 2014 11:20

Todas as Respostas