何となく Blog by Jitta
Microsoft .NET 考

目次

Blog 利用状況
  • 投稿数 - 761
  • 記事 - 18
  • コメント - 36169
  • トラックバック - 222
ニュース
  • IE7以前では、表示がおかしい。div の解釈に問題があるようだ。
    IE8の場合は、「互換」表示を OFF にしてください。
  • 検索エンジンで来られた方へ:
    お望みの情報は見つかりましたか? よろしければ、コメント欄にどのような情報を探していたのか、ご記入ください。
It's ME!
  • はなおか じった
  • 世界遺産の近くに住んでます。
  • Microsoft MVP for Visual Developer ASP/ASP.NET 10, 2004 - 9, 2011
広告

記事カテゴリ

書庫

日記カテゴリ

ギャラリ

その他

わんくま同盟

同郷

 

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
コメント
タイトル
名前
Url
コメント