This question描述如何確保IObservable<>.Throttle
通過將UI調度程序傳遞到Throttle
而在UI線程上運行。但是,我的觀察對象是在基於.NET Standard 1.5的共享庫中定義的。在.NET標準中是否有等效的DispatcherScheduler.Instance
或者我應該從使用(WPF/UWP/etc)庫注入調度程序?在.NET標準庫中訪問調度程序IScheduler
3
A
回答
1
DispatcherScheduler類不存在於.NET Standard的System.Reactive程序集中。
可能的解決方法是使用SynchronizationContextScheduler
與當前SynchronizationContext
。當您在UI線程上調用ObserveOn()
時,observable的處理程序將在UI線程上運行。
當ObserveOn()
未在UI線程上調用時,整件事情都不起作用。爲了避免這種情況,您可以創建類似於AppContext
對象的對象,在UI初始化發生時進行設置,並在應用程序中將其分配。將SynchronizationContext.Current
保存在此AppContext
之內,並且您可以從您擁有AppContext
的任何地方在UI線程上創建觀察者。
IObservable<EventArgs> myObservable = GetSomeObservableEvents();
var myScheduler = new SynchronizationContextScheduler(SynchronizationContext.Current);
myObservable.ObserveOn(myScheduler).Subscribe(ev =>
{
// some code that should run on UI thread
});
我在Xamarin.Forms 2.5.0項目,在那裏我有一個應用程序項目.NET 2.0標準包含的ViewModels,意見等這樣使用它。
這個答案是有效的(至少)此條件下:
- .NET標準項目版本是2.0
- System.Reactive具有版本4.0.0-preview00001
+0
感謝您的回答。它已經有一段時間了,但是從記憶來看,我採用了類似的方法,並將上下文傳遞給觀察者。 –
相關問題
- 1. ms訪問年度標準
- 2. 問題,而在標準的.Net類庫引用.net庫中
- 3. 如何在SQL中調用標準的.NET程序集
- 4. 程序訪問調用堆棧.net
- 5. C#Microsoft HPC IScheduler - 調試問題
- 6. .NET中的System.Runtime.CompilerServices標準庫
- 7. .Net應用程序標準圖標集
- 8. 類庫.NET標準和mscorlib.dll
- 9. msbuild builderror for .net標準庫
- 10. NET標準庫引用.NETCore
- 11. 合併.NET標準程序集
- 12. 如何在asp.net中訪問Outlook的調度程序
- 13. 從內存中訪問.net程序
- 14. 用於訪問PE標題的.NET庫
- 15. .NET核心與標準.NET庫性能
- 16. 爲多線程GAE應用程序調度請求的標準
- 17. .Net標準庫是否支持Windows7 WPF應用程序?
- 18. 使用.NET標準庫的ASP.NET Web應用程序
- 19. 使用Azure IOT庫創建Xamarin.Forms .Net標準應用程序?
- 20. 從.NET標準庫引用Xamarin.Android程序集
- 21. 當引用.net標準類庫時找不到System.Runtime程序集
- 22. HTML5 websockets與可訪問性標準的兼容程度如何?
- 23. 訪問VBA多重排序標準
- 24. Microsoft.AspNetCore.TestHosts不能在.NET 1.6標準類庫
- 25. 在.NET4.0中訪問.NET 4.5類庫winform
- 26. 多線程數據庫訪問(.NET)
- 27. .NET標準中的GetMethod等效標準
- 28. .NET創建新的調度程序
- 29. 從標準Windows端訪問metro風格的應用程序
- 30. Hadoop度量標準問題
是的,你應爲所有WPF/UWP代碼使用調度調度程序。 – Enigmativity
@Enigmativity DispatcherScheduler.Instance在.NET標準項目中找不到。我只是比較了WPF和.NET標準項目中的System.Reactive 4.0(pre)。 WPF仍然知道DispatcherScheduler.Instance,.NET標準沒有。 –