【问题标题】:ManagementObjectSearcher not functioningManagementObjectSearcher 无法正常工作
【发布时间】:2015-05-19 07:05:02
【问题描述】:
        Dim cpuWMI As ManagementObjectSearcher = New ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_Processor")
    For Each instance As ManagementObject In cpuWMI.Get()
        cpuspeedTXT.Text = instance.GetPropertyValue("CurrentClockSpeed").ToString
    Next

我注意到这不起作用,所以我在Dim 上设置了一个断点。当我迈出一步时,它恢复了程序(就好像它跳过了其余的一样)。我还注意到这个块下面的任何东西都不会被执行。

【问题讨论】:

  • 您可以在 Dim 之后插入一个临时代码行并在其上放置一个断点,这样您就可以检查 cpuWMI
  • 我确实这样做了。我在cpuWMI 之后加入了Dim test。越过cpuWMI 后,程序继续。它完全忽略了cpuWMI之后的任何内容。
  • Dim 实际上可能不会生成任何 IL。尝试插入 Console.WriteLine() 代替。原来的 Dim 是否抛出异常?这将跳过下一行。
  • 不,它没有抛出异常。就像被注释掉后的其他所有内容一样。 Console.WriteLine() 没有改变任何东西。
  • 我想我找到了。我把它放在一个 Try/Catch 块中,它给了我“无效参数”。感谢您提及异常,因为这是我想使用 Try/Catch 块的唯一原因。

标签: vb.net wmi


【解决方案1】:

程序忽略我的声明的原因是隐藏的异常。为什么它没有向我显示异常,我不确定。我放了

Dim cpuWMI As ManagementObjectSearcher = New ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_Processor")

在 Try/Catch 块中,发现“无效参数”异常。然后我意识到我不需要root\\CIMV2 中的双反斜杠。删除一个反斜杠解决了这个问题。

【讨论】:

  • 中断异常是 Visual Studio 中的一个可选选项。请参阅菜单 > 调试 > 异常
  • 啊,我不知道并非所有异常都显示了。这可能会解释过去代码无法正常工作的其他一些奇怪事件。可能没有显示异常。
猜你喜欢
  • 2016-12-01
  • 1970-01-01
  • 2016-09-01
  • 2012-07-11
  • 2018-04-08
  • 2017-04-20
  • 2018-10-02
  • 2016-09-04
  • 2010-10-06
相关资源
最近更新 更多