在观察主线程时是否有必要同步observable?

时间:2012-05-14 21:24:28

标签: c# multithreading c#-4.0 system.reactive

这需要.Synchronize()吗?如果没有,何时实际需要使用?

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

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

1 个答案:

答案 0 :(得分:4)

Synchronize扩展方法用于两件事:

  1. 确保应用的可观察量遵循适当的可观察“合约” - 即OnNext*(OnError|OnCompleted)
  2. 确保每个OnNext都被序列化 - 如果在不同的线程上调用则不会重叠。
  3. 在你的情况下,你正在同步到当前的上下文,所以第二个点会自动为你处理。