最近我注意到我的代码中有一个使用 Reactive Extensions 的小错误。我订阅了 Timer,但我从未处理过我的订阅。这导致了内存泄漏。
我创建了突出显示这种危险的片段:
while (true)
{
Observable.Timer(TimeSpan.Zero, TimeSpan.FromMinutes(1)).Subscribe(Console.WriteLine);
}
这是正常行为吗?
当订阅者与应用程序的其余部分失去连接时,调度程序不应该持有对计时器的弱引用以使其垃圾收集吗?