c# - ObserveOn 与修改代码以在主线程上运行

标签 c# multithreading coding-style system.reactive reactiveui

我有一个 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/

相关文章:

c++ - 防止C++中 namespace 中毒的绝佳方法

c# - 如何返回包含在 1 个函数中找到的总行数的记录

c# - 垃圾收集和大对象堆中的代数

c# - 编译 lambda 表达式会产生带有 Closure 参数的委托(delegate)

java - 两个线程在不同步的情况下访问的计数器的最小值

language-agnostic - rc代表什么

c# - 使用Partial Classes来管理代码,好的解决方案?

c# - 将默认类型设置为通用调用方方法 C#

multithreading - Haskell/GHC 每线程内存成本

java - 线程中的异常 java.lang.NullPointerException