2

这 .Synchronize() 需要吗?如果没有,什么时候真正需要使用?

_subject.SubscribeOn(Scheduler.TaskPool).ObserveOn(SynchronizationContext.Current).Synchronize().Subscribe(OnNext)

我认为这可能是必要的原因是因为我正在从多个线程调用主题的 OnNext。不过,我确实希望在主线程上执行 OnNext 方法。

4

1 回答 1

4

Synchronize扩展方法用于两件事:

  1. 确保应用它的可观察对象遵循适当的可观察“合同” - 即OnNext*(OnError|OnCompleted).
  2. 确保每个都OnNext被序列化 - 如果在不同的线程上调用,则不会重叠。

但是,在您的情况下,您正在同步到当前上下文,因此会自动为您处理第二点。

于 2012-05-15T00:28:55.387 回答