2011-06-22 33 views
0

C#/ .NET中有哪些选项可用来获取已安装打印机的状态?我们需要的唯一信息就是如果打印机处于打开或关闭状态(我们在屏幕上有一个指示灯,指示“打印机就绪”或“打印机离线”)。WMI有什么替代方法可用于获取打印机的状态?

我们的应用程序是一个在嵌入式PC上运行的小型客户端。我们发现WMI Windows进程内存不足。在我的开发PC上观看它时,由于它使用的内存量缓慢增加,似乎存在内存泄漏。在内存有限的嵌入式设备上,这是不可接受的,我们在几个小时后发现应用程序崩溃。

+2

你有没有试过处理内存泄漏? –

+0

这是WMI进程(wmiprvse.exe)正在增加,因此看起来内存泄漏超出了我的控制范围。我每秒执行一次循环: - 'ManagementObjectSearcher searcher = new ManagementObjectSearcher(“SELECT * FROM Win32_Printer”); 的foreach(在searcher.Get的ManagementObject打印机()){ // 检查打印机的名称,并与脱机工作性质 值触发一个事件}' – Adam

+1

它仍然可能是你的代码是不是释放另一端。尝试只使用一个'ManagementObjectSearcher' –

回答

2

我会尽力解决内存泄漏问题,但是如果您找不到它,您总是可以使用PInvoke调用(具体为GetPrinterData)。看一个例子here(注意:也有WMI的帖子,可以帮助你比较你有什么,看看你是否可以找到内存泄漏)

相关问题