이렇게하려면 각 Rx 관찰 가능 구독이 연속적으로 작동한다는 것을 깨닫는 것이 매우 유용합니다. 즉, 하나의 관찰 가능 항목을 한 번 구독하면 다음 항목에 대한 onNext
이 시작되기 전에 한 항목의 onNext
대리인이 완료되었는지 확인할 수 있습니다.
기본적으로 onNext
대리자는 현재 스레드 (즉 OnNext()
을 호출하는 스레드)에서 실행되지만 ObserveOn()
을 사용하여 변경할 수 있습니다.
이것이 의미하는 바는 각각의 물리적 드라이브에 대해 별도의 관찰 가능을 작성하고 각각의 개별 스레드에서 관찰 할 수 있어야한다는 것입니다. 이를 수행하는 한 가지 방법은 실행 작업을 관찰 할 수있는 유일한 작업이있는 경우 GroupBy()
을 사용하는 것입니다.
사용할 특정 스케줄러는 무엇입니까? 나는 그것이별로 중요하지 않다고 생각한다. ObserveOn()
은 사용 가능한 경우 ScheduleLongRunning()
을 사용하는 것으로 보입니다. 가장 일반적인 스케줄러의 경우 관찰을 위해 새 스레드를 생성한다는 의미입니다.
operations.GroupBy(op => op.Drive)
.Select(o => o.ObserveOn(TaskPoolScheduler.Default))
.Do(o => o.Subscribe(op => op.Execute()))
.Subscribe();
(. operations
가정하면 Drive
재산과 Execute()
방법을 가지고 당신의 작업 유형의 관측)
:처럼 모든 것을 함께, 코드를 볼 수있는 일을 퍼팅