前段时间我也遇到过类似的问题,问了this个问题.我认为那里的回应(包括 comments )会回答你的问题.总结一下:
- 如果要更新gui线程上的控件,请使用
ObserveOn
.如果你参考System.Reactive.Windows.Forms.dll
,你会得到.ObserveOn(form)
,这很方便.
SubscribeOn
控制实际调用subscribe的线程.这里解决的问题是,如果从多个不同线程添加事件处理程序,WinForms和WPF将抛出异常.
此外,this篇文章对弄清ObserveOn
和SubscribeOn
之间的关系非常有帮助.