不退订c#中的事件可能会有多严重? 是强制还是可取的行动?是否需要取消订阅活动?
19
A
回答
18
这是从MSDN documentation的重要组成部分,你应该考虑
要防止事件处理程序从 当事件是 提出被调用,只需从 事件退订。为了防止资源泄漏,在处理用户对象之前,从事件中取消订阅 是很重要的。直到您 取消订阅事件,发布对象中位于 事件之下的 多播委托对 封装订阅者事件 处理程序的代理的引用具有 引用。 只要发布 对象拥有该引用,您的 订户对象将不会收集垃圾 。
3
这取决于订阅者和发布者的生活时间。这里是关于这个问题的深度文章以及如何在这里解决它的几种方法:Solving the Problem with Events: Weak Event Handlers
2
重要的是取消订阅事件。如果你不这样做,那么订阅者不能被垃圾收集,实质上就是内存泄漏。以下是你可能会遇到,如果你不退订的问题,一个很好的例子:
http://developers.slashdot.org/article.pl?sid=07/11/17/0552247
此外,它可能会导致性能问题的事件处理程序将继续调用,即使它不是做对你有用的东西了。
另一方面,如果您刚刚结束程序的执行,那么没有理由退订事件。这当然不是强制性的,我不认为有任何理由推荐它。
相关问题
- 1. 动态订阅/取消订阅活动
- 2. 取消订阅/订阅活动危险?
- 3. 订阅和取消订阅活动
- 4. 我是否需要在asp.net中取消订阅(手动订阅)事件?
- 5. 检测订阅是否自动取消
- 6. 我们是否需要取消订阅完成/出错的observable?
- 7. 我需要取消订阅吗BoundNodeCallbackObservable
- 8. 如何正确取消订阅活动
- 9. 我应该取消订阅活动吗?
- 10. Magento - 没有通讯订阅和取消订阅活动
- 11. 我是否需要MSDN订阅
- 12. RHEL7 docker容器是否需要订阅?
- 13. 是否有API取消自动续订订阅?
- 14. 如何知道自动续订订阅是否被取消?
- 15. TypeError:'builtin_function_or_method'对象是否取消订阅?
- 16. 订阅取消订阅()
- 17. 我是否需要取消订阅c#metro应用程序中的事件?
- 18. 取消订阅范围内的所有活动是否安全$ destroy?
- 19. 当我在wpf中关闭窗口时,是否必须取消订阅活动?
- 20. Angular 2 - 订阅FormControl的valueChanges是否需要退订?
- 21. 订阅Spotify活动
- 22. 我们是否需要提醒用户有关自动续订订阅过期?
- 23. C#UI事件取消订阅 - 必要?
- 24. 取消iOS订阅
- 25. Android订阅取消
- 26. 如何取消订阅socket.io订阅?
- 27. Rxjs - 重新订阅取消订阅Observable
- 28. 如何取消订阅Weak订阅MvvmCross
- 29. 订阅/取消订阅VS Create/TakeUntil?
- 30. 如何取消订阅NServiceBus订阅?