我正在尝试在我的应用程序中实现一个功能,该功能列出了计算机中所有插入的 USB 大容量存储设备。
我的代码在启动应用程序时运行良好,但我的问题是我希望表单中的框在移除或连接 USB 设备时自动刷新。
实现 DBT_DEVICEARRIVAL 和 DBT_DEVICEREMOVECOMPLETE 条件应该可以工作,但我得到一个“检测到 DisconnectedContext”异常。
我了解到我需要使用委托并设置异步调用才能使其正常工作。
这是我的代码:
public void listUSB()
{
ManagementScope sc = new ManagementScope(wmiUsbList);
ObjectQuery query = new ObjectQuery("select * from Win32_DiskDrive " + "where InterfaceType='USB'");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(sc, query);
ManagementObjectCollection result = searcher.Get();
foreach (ManagementObject obj in result)
{
if (obj["DeviceID"] != null)
{
usbListTextBox.AppendText(obj["Model"].ToString());
}
}
}
我真的很想知道如何将委托应用于我的方法。
我还查看了 MSDN 上的这个线程,它提供了一个很好的示例,但就该示例而言,我无法理解如何将 deviceList 放入文本框中。
我仍在学习,所以如果有人能在我的一个或两个问题上为我指出正确的方向,那将不胜感激。
谢谢!