2014-06-22 6 views
2

Progress<T>을 매개 변수로 사용하고 내부적으로 진행률을보고하는 메서드가 있습니다.진행 <T> WPF 업데이트 용 버퍼링

작업자 스레드에서 빠르게 진행 (예 : 초당 수 백 회) 할 수 있으므로이를 버퍼링 한 다음 수신 한 레코드로보기 모델을 업데이트해야합니다. 매 30 초.

과거에는 Observable.FromEventPattern().Buffer(TimeSpan)을 사용 했으므로 Progress<T> 이벤트를보고 할 경우 동일한 Rx 메커니즘을 사용할 수 있습니다. 그러나 그것은 과잉처럼 보일 것입니다. 보다 우아한 솔루션이 있습니까?

TPL Dataflow의 BufferBlock도 살펴 봤지만 시간 기반 버퍼링을 지원하는지 잘 모르겠습니다. 매 30 초.

예를 든 사람이 있으면 게시하십시오. 대단히 감사하겠습니다.

+0

'BufferBlock'에는 이에 대한 지원이 없습니다. 당신은 타이머에서 'BatchBlock'을 사용하고 ['TriggerBatch()'] (http://msdn.microsoft.com/en-us/library/hh160310)를 호출 할 수 있습니다,하지만 Rx가 더 나은 선택이라고 생각합니다. – svick

+0

귀하의 의견을 보내 주셔서 감사합니다. Rx와 함께 갔어. –

답변

5

RX는 RX를 사용하기 위해 이벤트를 "필요"하지 않지만, Subject<Progress<T>>을 사용하고 현재는 Progress<T>을 사용할 수 있습니다. 매개 변수)는 데이터를 주제로 푸시합니다. 그럼 당신은 내가, 이전 당신이 이벤트와 당신이 사용하고있는 방법을 그 일에 대한 기분 경우 이벤트가

Subject<T> on MSDN

그러나 관찰 공급에 그랬던 것처럼 주제에 RX 쿼리이있을 것이다 너무 과장해서는 안된다.

+0

실제 코드를 게시 한 경우이 게시물을 수정하여 대상으로 다시 작성한 샘플 –

+0

을 작성하여 기꺼이이 게시물을 편집 해 드리겠습니다. 감사합니다. 주제가 인 것을 알지 못했습니다. –