C#上でExcelを開いたりすると、Excelのプロセスが残る場合がありますね。
メモリを解放、GC等を適切に処理しないと起こる現象です。
なので、プログラムからExcelを使う場合、Excelファイルに書き込んで保存するのが一般的な方法です。
しかし、ファイルに保存するのが嫌だ、ファイル名与えたりするのも面倒くさい。
そのまま、Excelのウィンドウを開いて、表示したいという方もいるはず。
しかし、そういう構造でプログラムを組む場合、該当のExcelプロセスの管理をプログラム側がする必要があります。
Excelのウィンドウを開いたまま、プログラムを閉じた場合、管理外になってしまうしぁ。
開いたら開きっぱなし、という構造にすると、Excelのプロセスが残って、Excelゾンビってのになってしまう。
寝る前に思いついた邪道な方法を公開します。
ムチャクチャですよ。
プログラミング的に正しいのか、わかりませんが。
効果はあります。
プロセスの中のExcelでウィンドウのタイトルが無いのが、ゾンビです。
だったら、そのプロセスをKillしてしまえば良いじゃん。
foreach (System.Diagnostics.Process clsProcess in System.Diagnostics.Process.GetProcesses())//すべてのプロセスを一個ずつ見て
{
if (clsProcess.ProcessName.Equals("EXCEL"))//プロセスの名前がExcelの物がある場合、
{
if (clsProcess.MainWindowTitle == "")//該当プロセスのメインウィンドウのタイトルが無い場合
{
clsProcess.Kill();//該当プロセスを終了してください。
}
}
}
どうでしょう。
これで、Excelゾンビプロセスは終了が出来ます。
ネットで調べたけど、この方法を紹介してる人は居ませんでしたね。
邪道ですね。こんなの思いつくの、最低のプログラマーだけですね。ふふふ。
副作用はあると思うので、用法はよく考えて使って下さい。
|
2016年1月11日月曜日
Excelゾンビの殺し方
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿