Excel などの、COM オブジェクトをオートメーションで使用する場合、じゃんぬさんのサイトにもありますが、try - finally で COM オブジェクトを解放します。
そうすると、インデントが深くなったり、ソースの可読性が落ちたりします。
そこで、解放はできるけど、あまりお勧めではない方法。
class ExcelInterface : IDisposeable {
Excel.Application excelInstance = null;
bool disposed = false;
public void Dispose() {
if (excelInstance != null) {
Marshal.ReleaseComObject(excelInstance);
excelInstance = null;
disposed = true;
}
}
その他必要な処理一式
}
// 使用する側
void someMethod() {
ExcelInterface excel = null;
try {
excel = new ExcelInterface();
使う
} finally {
if (excel != null) {
try {
excel.Dispose();
} finally {
excel = null;
GC.Collect();
}
}
}
}
ExcelInterface クラスで、クラスメンバとして宣言した変数をすべて null を参照するようにしておけば、GC.Collect できれいさっぱりなくなります。
しかし、むしろこのようないい加減なことはしないことを薦めます。
今あるプログラムで、あまりにも修正範囲が多すぎて直しきれない!!というときにだけ、使ってみましょう。。。
ええ、そうですよ。こうやって逃げました(×_×;)
投稿日時 : 2006年3月31日 23:17