我有一些模块在关闭时需要做一些整理工作,但看起来PRISM/Unity并不尊重IDisposable接口。有没有人有任何建议,我如何才能得到这个工作?PRISM/Unity IDisposable
1
A
回答
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()
方法。
相关问题
- 1. IDisposable Winform
- 2. Impementing IDisposable
- 3. 当了IDisposable被传递到父IDisposable的
- 4. Tricky IDisposable问题
- 5. StructureMap InstanceScope.Hybrid和IDisposable
- 6. Winforms处置IDisposable
- 7. EntLib IDisposable转换
- 8. WebControls和IDisposable
- 9. IDisposable和WCF
- 10. 实现了IDisposable
- 11. System :: IDisposable woes
- 12. IDbTransaction和IDisposable
- 13. IDisposable和COM
- 14. ASP.NET MVC - IDisposable模型
- 15. Coverity,Enumerable.Where(this ...)和IDisposable
- 16. EntityFramework给IDisposable错误
- 17. 实现IDisposable的C#
- 18. 清理IDisposable问题
- 19. MonoTouch和IDisposable模式
- 20. WCF Proxy + DI(Ninject)+ IDisposable
- 21. C++ Ref类不是System :: IDisposable的成员;麻烦实施IDisposable
- 22. 在父类还实现IDisposable时在子类上实现IDisposable
- 23. 在API中实现IDisposable
- 24. .NET IDisposable行内临时工
- 25. 为什么System.Net.Mail.MailMessage实现IDisposable
- 26. 静态IDisposable字典模式
- 27. EntLib CacheManager和IDisposable对象
- 28. System.Net.HttpListener只显式实现IDisposable
- 29. 明确实施了IDisposable
- 30. IDisposable接口+终结模式
我的回答对你有帮助吗? – Dutts 2013-05-09 15:27:33