如何在我的代码中处理IDisposable?

时间:2013-09-22 07:01:53

标签: c# idisposable

在我一直在研究的以下课程的CreateRegistryObservable方法中,我无法弄清楚如何清楚地处理下一行分配的IDisposable。问题在于我在Action指定的onComplete委托中引用它,该委托使用{null}初始化捕获声明的数组变量,并调用{{{}的调用返回的内容。在调用此Action时,不会反映最终结果。如何清洁地处理调度程序?

Schedule()

1 个答案:

答案 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
                            )
                    ));
            });
    }