/// <summary> /// Converts the DepthFrameArrived event to an observable sequence. /// </summary> /// <param name="kinectSensor">The kinect sensor.</param> /// <returns>The observable sequence.</returns> public static IObservable <DepthFrameArrivedEventArgs> DepthFrameArrivedObservable(this KinectSensor kinectSensor) { if (kinectSensor == null) { throw new ArgumentNullException("kinectSensor"); } return(Observable.Create <DepthFrameArrivedEventArgs>(observer => { var reader = kinectSensor.DepthFrameSource.OpenReader(); var disposable = kinectSensor.DepthFrameArrivedObservable(reader) .Subscribe(x => observer.OnNext(x), e => observer.OnError(e), () => observer.OnCompleted()); return new CompositeDisposable { disposable, reader }; })); }