我正在编写一个包含大量运算符的复杂Reactive Extensions查询.我怎么能看到发生了什么?
我提出并回答这个问题,因为它很有用,而且可能是很好用的.
这是一个相当有教育意义的,出于好奇的问题。考虑以下片段:
var enumerable = Enumerable.Range(0, 5);
var observable = enumerable.ToObservable();
var enu = observable.Concat(observable).ToEnumerable();
enu.ToObservable().SubscribeDebug();
Run Code Online (Sandbox Code Playgroud)
凡SubscribeDebug订阅一个简单的观察:
public class DebugObserver<T> : IObserver<T>
{
public void OnCompleted()
{
Debug.WriteLine("Completed");
}
public void OnError(Exception error)
{
Debug.WriteLine("Error");
}
public void OnNext(T value)
{
Debug.WriteLine("Value: {0}", value);
}
}
Run Code Online (Sandbox Code Playgroud)
这个的输出是:
值:0
价值:1
价值:2
价值:3
价值:4
然后块。有人可以帮助我理解它发生的根本原因以及为什么 observable 没有完成吗?我注意到它在没有Concat调用的情况下完成,但会阻塞。