3

閉じるときにいくつかの整理作業を行う必要があるモジュールがいくつかありますが、PRISM/Unity は IDisposable インターフェイスを尊重していないようです。これを機能させる方法について何か提案はありますか?

4

2 に答える 2

3

私は同じ問題を経験し、次のように解決しました:

最初にカスタム イベントを作成して、コンテナーが閉じていることをモジュールに通知できるようにしました。

public class ApplicationExitEvent : CompositePresentationEvent<string> { }

次に、ブートストラップで IDisposable を実装し、Dispose() メソッドでイベントを発生させます。

    public void Dispose()
    {
        var eventAggregator = Container.Resolve<IEventAggregator>();
        if (eventAggregator != null)
        {
            eventAggregator.GetEvent<ApplicationExitEvent>().Publish("");
        }
    }

次に、モジュールの Initialize() メソッドで、このイベントをサブスクライブします。

EventAggregator.GetEvent<ApplicationExitEvent>().Subscribe((o) => Dispose(), true);

そして、必要なクリーンアップ コードをモジュールの Dispose メソッドに入れます。

お役に立てれば。

于 2013-05-09T10:28:52.130 に答える
1

ほとんどの場合、モジュールはコンテナーにシングルトン (共有) コンポーネントとして登録されているため、破棄されません。

Dispose()Application.Exitコンテナを手動でIDisposable.Dispose().

于 2016-11-16T12:18:35.117 に答える