订阅处理 - 是否等待订阅操作结束?

时间:2016-12-23 07:58:49

标签: system.reactive idisposable

var sub = observable.Subscribe(data => my_action(data));

当我处置sub变量时,它将取消订阅。好的,但是这样做会等待my_action结束,如果它已经被调用了吗?

更新1:我要求有意识的决定,而不是一些副作用。将此与Threading.Timer进行比较 - 为了等待操作,您必须调用特殊的Dispose方法。

更新2:我要求等待以结束操作,而不是取消操作。

2 个答案:

答案 0 :(得分:3)

这取决于。如果操作和dispose发生在同一个线程上,则在操作完成后将进行处理。如果操作在不同的线程上运行,那么它们就会独立发生,并且可以在执行操作时进行处理。

答案 1 :(得分:3)

如果您的问题是,订阅处理是否会取消先前观察触发的操作,答案是否定的。

修改

要回答你澄清的问题,简短的回答是否定的。处置计划立即进行。根据您的线程/调度程序情况,它将立即执行,或者在有可用线程时执行。