我試圖在我的應用程序中實現一項功能,該功能列出了計算機中插入的所有USB海量存儲設備。用C#和WMI列出USB設備
我的代碼在啓動應用程序時運行良好,但我的問題是當我的表單中的盒子被移除或連接時,會自動刷新。
實現DBT_DEVICEARRIVAL和DBT_DEVICEREMOVECOMPLETE條件應該可以工作,但我找回了「DisconnectedContext was detected」異常。
我知道我需要使用委託並設置異步調用才能正常工作。
這裏是我的代碼:
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());
}
}
}
我真的很想知道如何委託適用於我的方法。
我也看了一下this MSDN上的線程,它提供了一個很好的例子,但就那個例子而言,我無法理解如何將deviceList放入文本框中。
我還在學習如果有人可以如此友善地指出我的一個或兩個問題的正確方向,那將不勝感激。
謝謝!