2012-08-30 26 views
4

我在我的應用程序中從兩個不同位置運行相同的代碼。我知道它是相同的代碼,因爲它在一個類中,並且該類只有一個面向公衆的函數。兩個地方都使用相同的參數調用函數,並且兩者都在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事件沒有被觸發,當我從一個位置運行當我從另一個角度運行它時,它總是觸發。

此外,另一個問題是,這似乎是計算機的具體情況;一些運行此工作的計算機工作得很好,其他人則表現出我上面描述的問題。

任何想法,我應該找的?

+0

搜索並在'壞'計算機上運行MS WMI診斷實用程序,然後修復/重建出現問題的任何問題。此鏈接可能也有幫助 - http://myitforum.com/cs2/blogs/jgilbert/archive/2008/01/11/how-to-check-the-wmi-repository-before-rebuilding-it.aspx – Lizz

+0

你有機會運行上面提到的utils? – Lizz

+0

對不起,但我沒有。我被轉移到另一個項目,並沒有時間這樣做。我應該有機會在某個時候再次努力,所以我一定會嘗試一下。當我知道更多時,我會更新這個。 –

回答

0

幾件事情嘗試:

  • 檢查WMI服務上的所有計算機上運行。
  • 在無法工作的計算機上重新啓動WMI服務。

您可能會感興趣這個article有用。

如果它是Windows 7或Windows Server 2008 R2服務器,則WMI有內存泄漏問題。檢查this

+0

增加了幾點 –

相關問題