我有2個線程,WPF + PIPE。我在管道rx事件中註冊WPF。 當使用ObserveOnDispatcher()時,不會調用註冊的處理程序,當移除ObserveOnDispatcher()時,會在管道線程上調用它。 有沒有人有想法,爲什麼它使用ObserveOnDispatcher()時根本沒有被調用?ObserveOnDispatcher無法正常工作
3
A
回答
7
ObservableOnDispatcher
在調用當前線程時調用調度程序。如果你從後臺線程調用它,它會在該線程上尋找一個調度器(如果它有一個)。
如果要回調到UI線程,你需要的IScheduler
從Scheduler.Dispatcher
而UI線程(比如在應用程序的開始)上獲得該實例傳遞給你的後臺線程。然後,您可以使用ObserveOn(dispatcherSchedulerInstance)
安排回UI線程。
0
你能發表一些代碼嗎? :)
一般來說,我會尋找任何可能阻止ui線程的地方,因爲wpf調度器是單線程的,調度器上的阻塞操作將導致您的訂閱回調永遠不會執行。
相關問題
- 1. START_STICKY無法正常工作
- 2. DataTrigger無法正常工作
- 3. YTPlayerView無法正常工作
- 4. @ Html.ValidationMessageFor無法正常工作
- 5. AppDomain.CurrentDomain.SetupInformation.ConfigurationFile無法正常工作
- 6. .fadeIn()無法正常工作
- 7. OnTouchListener無法正常工作
- 8. .htaccess無法正常工作
- 9. glTexSubImage2D無法正常工作
- 10. $ ionicScrollDelegate.getScrollPosition無法正常工作
- 11. Seekbar無法正常工作
- 12. onProviderEnabled無法正常工作?
- 13. Validation.HasError無法正常工作
- 14. Math.h無法正常工作?
- 15. document.createElement無法正常工作
- 16. Input.GetKeyDown無法正常工作
- 17. Bootstrap無法正常工作
- 18. PIDinRootline無法正常工作
- 19. PushNotification無法正常工作
- 20. wcstok()無法正常工作?
- 21. mapView:didSelectAnnotationView:無法正常工作。
- 22. killBackgroundProcesses無法正常工作
- 23. Bootstrap無法正常工作
- 24. uibarbuttonitem無法正常工作
- 25. MessageFormat無法正常工作
- 26. json_decode無法正常工作
- 27. mediaplayer無法正常工作
- 28. Viewpager無法正常工作
- 29. TransactionTimeout無法正常工作
- 30. Gradle無法正常工作
我剛剛發現,當我從管道線程調用ObserveOnDispatcher()。subscribe()時,它不會,但是當我從WPF線程調用它時,它工作正常! – ie1 2011-05-18 11:09:46
ObserveOnDispatcher使用'當前'調度程序,所以對於普通線程來說,這將是ThreadPool。從一個wpf線程,它將使用與該線程相關聯的wpf調度程序。即時通訊不知道我明白,如果你的問題已得到解決或雖然:) – aL3891 2011-05-18 11:16:17
它解決了,因爲我將訂閱移動到WPF線程。但是我認爲ObserveOnDispatcher方法將在應用程序WPF調度程序上進行註冊,而這個調用程序會被調用。 – ie1 2011-05-18 11:24:56