2011-06-22 31 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的帖子,可以幫助你比較你有什麼,看看你是否可以找到內存泄漏)

相關問題