为什么WMI查询有时会失败,而有些失败?

时间:2012-08-30 19:45:21

标签: printing wmi wmi-query zebra-printers

我在应用程序中的两个不同位置运行相同的代码。我知道它是相同的代码,因为它在一个类中,并且该类只有一个面向公众的函数。两个地方都使用相同的参数调用该函数,并且两者都在UI线程中运行。

该功能使用异步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事件时没有触发它,当我从另一个位置运行它时,它会一直触发。

另外,另一个问题是这似乎是计算机专用的;我运行的一些计算机工作得很好,其他计算机出现了我上面描述的问题。

我应该寻找什么想法?

1 个答案:

答案 0 :(得分:0)

要尝试的事情:

  • 检查WMI服务是否在所有计算机上运行。
  • 在不能正常工作的计算机上重新启动WMI服务。

您可能会发现此article有用。

如果是Windows 7或Windows Server 2008 R2服务器,则WMI存在内存泄漏问题。检查this