2011-06-22 9 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

それはまだあなたのコードではないことが考えられもう一方の端を解放する。ただ1つの 'ManagementObjectSearcher 'を使ってみてください –

答えて

2

私はメモリリークを解決しようとしますが、見つからない場合はいつもPInvokeコール(特にGetPrinterData)を使用できます。例hereを参照してください(メモ:あなたが持っているものを比較し、メモリリークがあるかどうかを確認するのに役立つWMIの投稿もあります)

関連する問題