DelegateDispose

class

名前空間:SilCilSystem.Variables

継承:

Assembly:SilCilSystem


Disposeメソッドで呼ばれる処理を指定できるIDisposableです。

メンバ一覧

メソッド

member description
void Dispose() 登録したメソッドを呼び出す。
static IDisposable Create(Action action) 新しいDelegateDisposeを生成する

使用例

イベントオブジェクトの登録解除に使用しています。

private event Action m_event;
public IDisposable Subscribe(Action action)
{
    // イベントを登録.
    m_event += action;
    // 解除用のIDisposableクラスを返す.
    return DelegateDispose.Create(() => m_event -= action);
}

実装

指定されたメソッドを変数として保持してDisposeで呼び出しています。

private Action m_delegate;

public void Dispose()
{
    m_delegate?.Invoke();
    m_delegate = null;
}

m_delegateへの代入はstaticメソッドのCreateで行っています。

public static IDisposable Create(Action action)
{
    var instance = m_pool.GetInstance();
    instance.m_delegate = action;
    return instance;
}

newが極力呼ばれないようにするためにオブジェクトプールを行っています。


ドキュメントトップへ

ダウンロードページへ