Taketill 未按文档记录工作

本文关键字:记录 工作 文档 Taketill | 更新日期: 2023-09-27 18:34:38

来自TakeUntil运算符的文档(强调我的(:

TakeUntil 订阅并开始镜像源 Observable。它还监视您提供的第二个可观察量。如果第二个可观察量发出项目或发送终止通知,则 Taketill 返回的可观察量将停止镜像源可观察量并终止

如果这是真的,那么为什么会阻止?

Observable.Never<Unit>()
    .TakeUntil(Observable.Empty<Unit>())
    .Wait();

Taketill 未按文档记录工作

Preston Guillot在评论部分说得很到位:

(旧的(MSDN 文档与主 Rx 站点的文档不同,仅声明TakeUntil"从源可观察序列返回值,直到另一个可观察量序列生成值">,而不考虑终止的可观察量。

我们来看看Observable.TakeUntil的源代码,具体来说class O它代表"终结者"Observable。我们可以看到parent.OnCompleted通知是在O.OnNextO.OnError上发送的。

因此,您的代码阻塞的原因是Observable.Empty(充当"终结者"(仅发出OnCompleted通知。