나는이 주제에 constructive discussion가 대신 쿼리에 애드혹 Do
연산자를 추가하는 2009 년
의 수신 포럼에 미친되었다고 생각, 당신은 사용자 정의 로그/추적 연산자를 추가합니다. 이 연산자는 Subscription, Disposal, OnNext, OnError 및 OnCompleted 이벤트를 캡처합니다. 구현에 따라 콘솔에 쓰거나, 좋아하는 Logger 라이브러리를 사용하거나, OS 및 Visual Studio 통합을 위해 ETW 이벤트를 만들 수도 있습니다.
public static class ObservableTrace
{
public static IObservable<TSource> Trace<TSource>(this IObservable<TSource> source, string name)
{
int id = 0;
return Observable.Create<TSource>(observer =>
{
int id1 = ++id;
Action<string, object> trace = (m, v) => Debug.WriteLine("{0}{1}: {2}({3})", name, id1, m, v);
trace("Subscribe", "");
IDisposable disposable = source.Subscribe(
v => { trace("OnNext", v); observer.OnNext(v); },
e => { trace("OnError", ""); observer.OnError(e); },
() => { trace("OnCompleted", ""); observer.OnCompleted(); });
return() => { trace("Dispose", ""); disposable.Dispose(); };
});
}
}
위대한 질문입니다. 나는 항상 내 Rx 코드를 디버깅하기 위해 고심하고있다. – Tim
나는 casperOne이 우연히 닫힌이 질문에 강력히 동의하지 않습니다. 나는 매우 구체적인 기술에 대한 전문 지식을 찾고 있습니다. 이 질문은 "의견, 논쟁, 논쟁, 여론 조사 또는 토론 확대"로 이어지지 않을 것입니다. – scobi
건설적이지 않습니까? 어쩌면이 질문은 충분히 구체적인 것은 아니지만 매우 가치있는 질문입니다. 오, 글쎄, 왜 "이 코드가 컴파일되지 않는가?"라는 질문으로 돌아갑니다. –