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