2011-08-01 16 views
0

私はいくつかのサンプルからこのコードをまとめました。私は理解できません。以下のコードでこの行では、単語のオブザーバーに、このコードでは奇妙なエラーが報告されましたので、説明してください。

Dim Results As ManagementObjectCollection = Worker.Get(Observer) 

私はエラー 取得

が誰か缶「型の値が 『System.Management.ManagementOperationObserver』 『Integer型』に変換できません」これが何を意味するのか説明してください

ManagementObjectSearcher.Get()には2つのシグネチャがあり、1つはパラメータなし、もう1つは非同期操作のManagementOperationObserverです。それは私が提供しているものですが、エラーは整数を伴う変換を示していますか?

Public Shared Sub WMIDriveDetectionASYNC(ByVal args As String()) 

     Dim Observer As New ManagementOperationObserver() 
     Dim completionHandler As New MyHandler() 
     AddHandler Observer.Completed, AddressOf completionHandler.Done 

     Dim Machine = "192.168.0.15" 
     Dim Scope = New ManagementScope("\\" & Machine & "\root\cimv2") 
     Dim QueryString = "select Name, Size, FreeSpace from Win32_LogicalDisk where DriveType=3" 
     Dim Query = New ObjectQuery(QueryString) 
     Dim Worker = New ManagementObjectSearcher(Scope, Query) 
     Dim Results As ManagementObjectCollection = Worker.Get(Observer) 'use parameter to make async 

     For Each item As ManagementObject In Results 
      Console.WriteLine("{0} {2} {1}", item("Name"), item("FreeSpace"), item("Size")) 
      Dim FullSpace As Long = (CLng(item("Size")) - CLng(item("FreeSpace"))) \ 1000000 
      Console.WriteLine(FullSpace) 
     Next 

    End Sub 

Public Class MyHandler 
     Private _isComplete As Boolean = False 

     Public Sub Done(sender As Object, e As CompletedEventArgs) 
      _isComplete = True 
     End Sub 'Done 

     Public ReadOnly Property IsComplete() As Boolean 
      Get 
       Return _isComplete 
      End Get 
     End Property 

End Class 

ありがとうございました!

+0

「Worker.Get」はどのように見えますか? – Oded

答えて

2

私は結果を取得し、パラメータとして送信したオブジェクトに配置するために参照型を使用すると思います。だから私はちょうどのようにする必要があると思う:

Worker.Get(Observer) 

値を返す関数ではないので、何かを設定しようとしています。

次に、オブジェクトに接続するイベントを使用して、見つけたアイテムで何が必要かを処理します。

+0

ありがとうございましたD、ありがとうございました。 – TripleAntigen

関連する問題