我在我的應用程序中從兩個不同位置運行相同的代碼。我知道它是相同的代碼,因爲它在一個類中,並且該類只有一個面向公衆的函數。兩個地方都使用相同的參數調用函數,並且兩者都在UI線程中運行。爲什麼WMI查詢有時會失敗,但不是其他人?
功能並使用異步WMI查詢特定打印機的搜索按名稱 - >
var searcher =
new ManagementObjectSearcher(
"SELECT * from Win32_Printer WHERE Name LIKE '%ZDesigner GX430t'");
// Create an observer to trigger a callback when the search is completed.
var watcher = new ManagementOperationObserver();
watcher.Completed += PrinterSearchCompleted;
watcher.ObjectReady += PrinterSearchReady;
// Look for the printer
_printerFound = false;
_searchCompleted = false;
searcher.Get(watcher);
我遇到的問題是,ObjectReady事件沒有被觸發,當我從一個位置運行當我從另一個角度運行它時,它總是觸發。
此外,另一個問題是,這似乎是計算機的具體情況;一些運行此工作的計算機工作得很好,其他人則表現出我上面描述的問題。
任何想法,我應該找的?
搜索並在'壞'計算機上運行MS WMI診斷實用程序,然後修復/重建出現問題的任何問題。此鏈接可能也有幫助 - http://myitforum.com/cs2/blogs/jgilbert/archive/2008/01/11/how-to-check-the-wmi-repository-before-rebuilding-it.aspx – Lizz
你有機會運行上面提到的utils? – Lizz
對不起,但我沒有。我被轉移到另一個項目,並沒有時間這樣做。我應該有機會在某個時候再次努力,所以我一定會嘗試一下。當我知道更多時,我會更新這個。 –