我有一个 View 模型,它在与 UI 线程分开的线程上触发各种对象的可观察对象。同时,有订阅这些可观察对象的 View 代码,需要更新 UI 线程上的控件。
就编码风格而言,使用 ObserveOn
是否更好以确保 OnNext 处理程序在 UI 线程上运行(即添加 ObserveOn
可以在另一个线程上触发的任何地方),或者让 View 模型代码负责在 UI 线程上调用/调度(即不需要 ObserveOn
,但有一次需要丑陋的调用/调度 lambda),或者两者都一样好?
最佳答案
在这里看看我的回答:ObserveOn and SubscribeOn - where the work is being done .
一旦您理解了这一点,具体的答案就应该很清楚,并且将取决于您的 Rx 查询的具体工作方式。
通常,您希望尽量减少在 UI 线程上完成的工作,因此在订阅后尽快离开 UI 线程(如有必要,使用 SubscribeOn
),然后回到 UI 线程尽可能晚地使用 ObserveOn
。您通常会将这些应用于链中的最后一个运算符。
关于c# - ObserveOn 与修改代码以在主线程上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20769022/