2013-05-09 104 views
1

我有一些模塊在關閉時需要做一些整理工作,但看起來PRISM/Unity並不尊重IDisposable接口。有沒有人有任何建議,我如何才能得到這個工作?PRISM/Unity IDisposable

+0

我的回答對你有幫助嗎? – Dutts 2013-05-09 15:27:33

回答

2

我經歷了同樣的問題,解決了這個問題是這樣的:

首先我創建一個自定義事件,讓我信號我模塊容器關閉:

public class ApplicationExitEvent : CompositePresentationEvent<string> { } 

然後在我的引導程序我實現IDisposable,在我的Dispose觸發事件()方法:

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

然後在我的模塊的初始化()方法,我訂閱了這個事件:

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

並把我需要的清理代碼放在我的模塊的Dispose方法中。

希望這會有所幫助。

0

很可能你的模塊沒有被處理,因爲它們在容器中被註冊爲單件(共享)組件。

Dispose()您的容器中手動上Application.Exit,和所有一次性模塊(從這個容器的其他解決共享的一次性部件)應該稱他們IDisposable.Dispose()方法。