C# で RectiveProperty
利用時に大量の Dispose()
呼ばないといけないのでテンプレメモった ReactiveProperty
のネット上のサンプルには必ずしもこのように書いてない事があるのでコピペ気味な人は注意にゃーん。
MvvM
的には Model
が永続的かつそれを監視してビューに反映させる為に ReactiveProperty
を利用したケースでは View
から ViewModel
の Dispose()
を明示的に呼ばないと Model
ViewModel
間の参照が消えずリーク的動作になると思われにゃーん。 (この理解であってる?)
using System;
using System.Reactive.Disposables
public class Foo : IDisposable
{
private CompositeDisposable Disposable { get; } = new CompositeDisposable();
~Foo ()
{
Dispose(false);
}
public void Dispose()
{
Dispose(true);
// GC.SuppressFinalize(this); if overrided "virtual void Dispose(bool disposing)"
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
// managed?.Free();
// managed = null;
Disposable.Dispose();
}
// unmanaged?.Free();
// unmanaged = null;
}
public Foo ()
{
// Disposable.Add(DisposableInstances);
// rxprop = model.ToReactivePropertyAsSynchronized(m=>m.Value).AddTo(Disposable);
// rxprop = model.ObserveProperty(m=>m.Value).ToReactiveProperty().AddTo(Disposable);
}
}