UI 스레드에서 관찰하는 올바른 방법은 무엇입니까
-
20-12-2019 - |
문제
나는 관찰 가능한 항목을 구축하고 있습니다. 위치정보 이벤트는 UI 스레드에서 구독되어야 합니다.
~이다 ObserveOnDispatcher
더 이상 사용되지 않습니까?
해결책
ObserveOnDispatcher()
더 이상 사용되지 않지만 Paul이 말했듯이 일반적으로 명시적인 스케줄러를 제공하여 TestScheduler
단위 테스트용.
DispatcherScheduler.Current
전류를 얻는 데 사용할 수 있습니다. DispatcherScheduler
- 아니다 .Instance
, 실제로는 둘 이상이 있을 수 있으므로 의미가 있습니다. 비록 대부분의 사람들이 특정 경로를 따라갈 필요는 없지만!
ObserveOnDispatcher()
그리고 DispatcherScheduler
Windows Phone 8 Rx 빌드에 있습니다.그들은에 있습니다 rx-xaml
xaml 플랫폼 특정 요소를 포함하는 nuget 패키지 - 방금 포함했다면 이 패키지를 놓쳤을 것입니다. rx-main
.
구체적으로, 그들은 다음과 같은 지역에 위치하고 있습니다. System.Reactive.Windows.Threading.dll
집회. ObserveOnDispatcher()
에 있습니다 System.Reactive.Linq.DispatcherObservable
유형이 있고 어셈블리에도 System.Reactive.Concurrency.DispatcherScheduler
.
다른 팁
나는 보통 다음과 같이 씁니다:
.ObserveOn(DispatcherScheduler.Instance)
내가 사용하지 않는다면 반응형UI.내가 그렇다면, 그것은
.ObserveOn(RxApp.MainThreadScheduler)
차이점은 단위 테스트 실행기에서는 RxApp.MainThreadScheduler
자동으로 조작되어 CurrentThread
, 따라서 단위 테스트가 통과됩니다. 그렇지 않으면 모두 중단됩니다.