실례 합니다만 실례 합니다만 Reactive extensions에 약간의 경험이 있습니다. 내가 원하는 것은이 같은 것입니다 : 항목을 항상 방출이 관측 주어진동시에 듣고있는 동안 subscribe 함수를 주기적으로 호출하십시오.
myObservable.Do(d => myObserver.OnNext(d)).Interval(someTime).subscribe({ Run the this code periodically with period T=sometime});
구두로, 필요한 것은 내부 함수를 호출하는 관찰자와 기간마다 시간 T
에 연속적으로 공급에 이러한 항목입니다 subscribe
. 이 함수를 언급하면 myObserver
내부의 일부 함수가 호출됩니다. 위의 발췌 문장은 작동하지 않습니다. myObservable
에는 Interval
의 정의가 포함되어 있지 않습니다. 상황에 어떤 빛을 던지시겠습니까?
편집 : 관찰자는 들어오는 항목을 처리합니다. 따라서 내가 원하는 것은 모든 시간을 듣고 시작과 중지 과정을 모두 T
마다 호출하는 것입니다. 이 프로세스는 항목을 수집하고 저장해야합니다. 약간의 시작과 멈춤이있다 memorystream
. 따라서 처음으로 (StartWith(-1L)
) 관찰자는 어떤 처리를 시작하고 T
초 후에 해당 절차를 중지합니다. 이 시작 및 중지 루프는 주기적으로 계속됩니다.
편집 # 2 :
나는 항목을 방출하는 IObservable<T>
있습니다. 이러한 항목은 관찰자가 수신합니다. 이 관찰자는 데이터를 처리 할 수 있습니다. 내가 원했던 것은이 과정을 주기적으로 시작하고 중지하는 것이다. 즉, 관찰자는 항상 시간과 시간 데이터를 받아야합니다. t
이 프로세스는 중지 된 경우 시작해야하며 이미 시작/실행중인 경우 중지해야합니다. 이 start()
stop()
함수는 observer.start() 및 observer.stop()과 같은 observer의 멤버입니다. 또한 프로세스가 실행 중일 경우 참/거짓 인 관찰자 내부에 플래그/부울이 있습니다. Interval
은 작동해야하지만 IObservable<T>
과 작동하지 않는다고 생각합니다. 상황에 어떤 빛을 던지시겠습니까?
편집 # 3 토론의 덕분에 필요한 것을 발견했다고 생각합니다.
observable.subscribe(oberver) // observer always listening
TimeSpan someTime = TimeSpan.FromMinutes(1.0);
IObservable<long> myObservable = Observable.Interval(someTime);
myObservable.Subscribe(d =>
{
if (!observer.isProcessing)
{
observer.Start();
}else if (observer.isProcessing)
{
observer.Stop();
}
});
관찰자를 언급하지 않고 문제를 설명하십시오. 옵서버를 사용하는 것은 아마도 잘못된 행동 일 것입니다. 보다 기본적인 단계에서 문제를 설명 할 수 있습니까? – Enigmativity
@Enigmativity 나는 내 게시물을 약간 변경했다. 도움이되기를 바랍니다. 어떤 도움을 주셔서 감사합니다. – Darkmoor
이 문제에 대해 잘못된 해결책을 강요하고 있습니다. 관찰자는'start()'또는'stop()'을 가져서는 안된다 - 관찰자는 "관찰자"여야하며 프로세스를 제어해서는 안된다. 또한 관찰자가 '관찰 가능 (Observable) <>'이라면 스스로 구현하기 때문에 일반적으로 좋지 않습니다. – Enigmativity