【问题标题】:Strange error reported in this code, please explain?这段代码报了奇怪的错误,请解释一下?
【发布时间】:2011-08-01 10:09:02
【问题描述】:

我将其他几个示例中的这段代码放在一起,但我遇到了一个我无法理解的错误。在下面代码的这一行,在 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

感谢您的建议!

【问题讨论】:

  • Worker.Get 长什么样子?

标签: vb.net wmi


【解决方案1】:

我认为使用引用类型来获取结果并将其放入您作为参数发送的对象中。所以我认为它只需要看起来像:

Worker.Get(Observer)

而不是尝试设置某些东西 = 因为它不是返回值的函数。

然后使用您连接到对象的事件来处理您需要对找到的项目执行的任何操作。

【讨论】:

  • 非常感谢 D,不过一提到就尴尬了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多