IDisposable 実装のひな形

仕事柄,アンマネージリソースをコチョコチョする機会が多いので
IDisposableインターフェースをちゃんと継承させて,実装させるよう,コーディングするよう心がけるようになり
そのひな形ですわん

結局あちこち探し回ってしまったので,ここに記載しておきますです

public class ClassMainJob : IDisposable
{
    #region 変数
    private bool m_Disposed = false;
    #endregion

    //---------------------------------------------
    //コンストラクタ
    //
    //---------------------------------------------
    public ClassMainJob()
    {
    }

    //---------------------------------------------
    //デストラクタ
    //
    //---------------------------------------------
    ~ClassMainJob()      
    {
        Dispose(false);            //マネージ系リソースの解放無しで呼び出す
    }


    //---------------------------------------------
    //リソースの解放
    //
    //---------------------------------------------
    public void Dispose()
    {
        Dispose(true);            //マネージ系リソースの解放有りで呼び出す
    }

    //---------------------------------------------
    //リソースの解放(本体)
    //
    //---------------------------------------------
    private void Dispose(bool disposing)
    {
        if(!m_Disposed)   //既に解放済みかチェック
        {
            //まだのとき
            if(disposing)        //マネージ系のリソース解放
            {
                //ここいらにマネージリソースの解放処理を
            }
         
            //アンマネージ系のリソースの解放
            //ここいらにアンマネージリソースの解放処理を
        }

        m_Disposed = true;         //解放済みフラグを立てる
    }

    //---------------------------------------------
    //実処理を行う
    //
    //---------------------------------------------
    public void JobWork()
    {
    }
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください