在我一直在研究的以下课程的CreateRegistryObservable
方法中,我无法弄清楚如何清楚地处理下一行分配的IDisposable
。问题在于我在Action
指定的onComplete
委托中引用它,该委托使用{null}初始化捕获声明的数组变量,并调用{{{}的调用返回的内容。在调用此Action时,不会反映最终结果。如何清洁地处理调度程序?
Schedule()
答案 0 :(得分:0)
我只是想出了自己,这是以下内容。
public IObservable<object> CreateRegistryObservable(RegistryKey registryKey, string name, TimeSpan timeSpan)
{
return Observable.Create<object>(o =>
{
var cancel = new CancellationDisposable();
var currentStateSubscription = new SerialDisposable();
object currentValue = null;
return new CompositeDisposable(cancel, NewThreadScheduler.Default.Schedule(
self => currentStateSubscription.Disposable =
CreateValueChangeObservable(registryKey, name, currentValue,
timeSpan, cancel.Token)
.Subscribe(value =>
{
currentValue = value;
self();
o.OnNext(value);
},
o.OnError,
currentStateSubscription.Dispose
)
));
});
}