我刚刚发现了SubscribeOn,这让我想知道我是否应该使用它而不是ObserveOn.谷歌给了我here分和here分,但这两者都没能帮我弄清楚其中的区别:它看起来微妙得令人难以置信.

(In my context, I've got events 'coming up' on a non-gui thread, and I need to switch over to a gui thread before using the event data to update controls).

推荐答案

前段时间我也遇到过类似的问题,问了this个问题.我认为那里的回应(包括 comments )会回答你的问题.总结一下:

  • 如果要更新gui线程上的控件,请使用ObserveOn.如果你参考System.Reactive.Windows.Forms.dll,你会得到.ObserveOn(form),这很方便.
  • SubscribeOn控制实际调用subscribe的线程.这里解决的问题是,如果从多个不同线程添加事件处理程序,WinForms和WPF将抛出异常.

此外,this篇文章对弄清ObserveOnSubscribeOn之间的关系非常有帮助.

.net相关问答推荐

.NET Blazor-使用子组件中的处理程序方法进行双向数据绑定

在计算Total毫秒时,.NET TimeSpan类中是否存在错误?

保存时不保留 XML 格式

通过 System.Net.Mail 的 VB SMTP 停止工作

是否有任何为 C# 编写的模糊搜索或字符串相似函数库?

如何获取控制台应用程序的执行目录

每第 N 个字符/数字拆分一个字符串/数字?

如何创建只读依赖属性?

使用 XmlSerializer 将空 xml 属性值反序列化为可为空的 int 属性

如何保护我的 .NET 程序集免受反编译?

Iif 在 C# 中等效

资源(.resx)文件有什么好处?

.NET 配置文件 configSource 在应用程序目录文件夹之外

为什么 double.NaN 不等于自身?

清除文件内容

DateTime.Compare 如何判断日期是否小于 30 天?

为什么 .NET 中没有 Tree 类?

如何使用 NPOI 读取文件

在foreach循环中修改列表的最佳方法是什么?

连接字符串而不是使用一堆 TextBlocks