订阅处置——是否等待订阅动作结束?
Subscription disposal -- does it wait for subscription action to end?
var sub = observable.Subscribe(data => my_action(data));
当我处理 sub
变量时,它将取消订阅。好的,但是如果它已经被调用,它会等待 my_action
结束吗?
更新1:我要求有意识的决定,而不是一些副作用。将此与 Threading.Timer 进行比较——为了等待操作,您必须调用特殊的 Dispose
方法。
更新 2:我要求 等待 动作结束,而不是 取消 动作。
视情况而定。如果动作和处置发生在同一个线程上,则处置将在动作完成后发生。如果操作在与处理不同的线程上运行,那么它们将独立发生,并且处理可能在操作执行时发生。
如果您的问题是,订阅-处置是否会取消先前观察触发的操作,答案是否定的。
编辑:
为了回答您澄清的问题,简短的回答是否定的。立即 安排 处置。根据您的 thread/scheduler 情况,它将立即执行,或者在有可用线程时执行。
var sub = observable.Subscribe(data => my_action(data));
当我处理 sub
变量时,它将取消订阅。好的,但是如果它已经被调用,它会等待 my_action
结束吗?
更新1:我要求有意识的决定,而不是一些副作用。将此与 Threading.Timer 进行比较——为了等待操作,您必须调用特殊的 Dispose
方法。
更新 2:我要求 等待 动作结束,而不是 取消 动作。
视情况而定。如果动作和处置发生在同一个线程上,则处置将在动作完成后发生。如果操作在与处理不同的线程上运行,那么它们将独立发生,并且处理可能在操作执行时发生。
如果您的问题是,订阅-处置是否会取消先前观察触发的操作,答案是否定的。
编辑:
为了回答您澄清的问题,简短的回答是否定的。立即 安排 处置。根据您的 thread/scheduler 情况,它将立即执行,或者在有可用线程时执行。