【发布时间】:2011-06-22 14:14:41
【问题描述】:
C#/.NET 中有哪些选项可用于获取已安装打印机的状态?我们需要的唯一信息是打印机是打开还是关闭(屏幕上有一个小指示器显示“打印机就绪”或“打印机离线”)。
我们的应用程序是在嵌入式 PC 上运行的小型客户端。我们发现 WMI Windows 进程内存不足。在我的开发 PC 上观看它似乎存在内存泄漏,因为它使用的内存量慢慢增加。在内存有限的嵌入式设备上,这是不可接受的,我们在几个小时后发现应用程序崩溃了。
【问题讨论】:
-
您是否尝试过处理内存泄漏?
-
WMI 进程 (wmiprvse.exe) 正在增加,因此看来内存泄漏超出了我的控制范围。我每秒循环执行以下操作:-
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Printer"); foreach (ManagementObject printer in searcher.Get()) { // Checking the name of the printer and firing an event with the value of the work offline property } -
仍然可能是您的代码没有释放另一端。尝试只使用一个
ManagementObjectSearcher -
我也尝试过只拥有一个 ManagementObjectSearcher 静态实例的方法,但我仍然看到 WMI 进程继续增长。