我从应用程序的两个不同位置运行相同的代码。我知道它是相同的代码,因为它在一个类中,而该类只有一个面向公众的函数。两个地方都使用相同的参数调用函数,并且都在 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 事件时不会触发它,而当我从另一个位置运行它时,它会一直被触发。
此外,另一个问题是这似乎是特定于计算机的。我运行这个的一些计算机工作得很好,其他的则表现出我上面描述的问题。
任何想法我应该寻找什么?