Я собрал этот бит кода из нескольких других примеров, и я получаю ошибку, которую не могу понять. В этой строке кода ниже, на слове Observer,
Dim Results As ManagementObjectCollection = Worker.Get(Observer)
я получаю ошибку
«Значение типа« System.Management.ManagementOperationObserver »не может быть преобразовано в« Integer »»
Может кто-нибудь объяснить, что это значит?
Есть две подписи для ManagementObjectSearcher.Get (), у одной нет параметров, а у другой - один параметр, 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
Спасибо за любой совет!