Dam*_*ian 7 system.reactive reactiveui
我从博客中查看了ReactiveUi的示例,我想知道ReactiveUI是否在下面有某种订阅管理工具,或者是忽略了它们可能泄漏订阅这一事实的例子?
每当我在ReactiveUi中调用一个导致a的方法时IDisposable,我是否需要保留该引用并自己跟踪它?这也意味着我的ViewModel需要是一次性的,这似乎很难,因为我们不知道什么时候连接的"视图"消失了(即如果我的ViewModel反映了数据网格中的项目),所以似乎没有合适的叫做处置的地方.
Ana*_*tts 14
您还必须记住,Rx和ReactiveUI返回的IDisposable与非托管内存无关 - 它只是简单的.NET对象,仍由垃圾收集器引用.
您在ReactiveObjects的构造函数中创建的大多数订阅都将绑定到宿主对象的生命周期 - 因此当它超出范围并受GC影响时,所有订阅也将如此,CLR将检测循环引用和只是把一切都搞定了.
正如Enigmativity所提到的,一个棘手的问题是当您使用FromEventPattern将订阅的生命周期(可能是ViewModel)与WPF对象的生命周期联系起来时.但是,我认为如果你经常在ReactiveUI中使用FromEventPattern,那么你肯定是在做错了.
RxUI是关于ViewModels的,而ViewModel都是关于命令和属性的(并且将属性相互关联的方式联系起来),因此您可以与其视觉效果分开测试用户体验的行为.
Eni*_*ity 11
IDisposable如果您需要从可观察对象中提前取消订阅,则只需要保留对订阅返回的引用.Observable自然会Dispose在它们通过OnCompleted或OnError消息终止时调用.
但是,当您具有无限可观察订阅(即FromEventPattern)时,您需要保留引用,但这与在关闭表单/视图之前需要删除事件处理程序完全相同.
| 归档时间: |
|
| 查看次数: |
2649 次 |
| 最近记录: |