Observable.Generate с TimeSpan селектор, похоже, утечка памяти [При использовании TimeSpan> 15 мс]

Я исследую использование Observable.Generate для создания последовательности результатов, отобранных с интервалами, используя примеры с веб-сайта msdn в качестве отправной точки.

Следующий код без селектора TimeSpan не обнаруживает утечку памяти:

IObservable<string> obs = Observable.Generate(initialState: 1,
                                              condition: x => x < 1000,
                                              iterate: x => x + 1,
                                              resultSelector: x => x.ToString());
obs.Subscribe(x => Console.WriteLine(x));

Однако следующий код с селектором TimeSpan обнаруживает утечку памяти:

TimeSpan timeSpan = TimeSpan.FromSeconds(1);
IObservable<string> obs = Observable.Generate(initialState: 1,
                                              condition: x => x < 1000,
                                              iterate: x => x + 1,
                                              resultSelector: x => x.ToString(),
                                              timeSelector: x => timeSpan);
obs.Subscribe(x => Console.WriteLine(x));

Например, это игрушечное приложение быстро покажет утечку памяти с помощью Memory Profiler, который поставляется с VS 2015 Community:

using System;
using System.Reactive.Linq;

namespace Sample
{
    public class Program
    {
        static void Main()
        {
            IObservable<string> obs = Observable.Generate(1, x => x < 1000*1000, x => x + 1, x => x.ToString(), x => TimeSpan.FromMilliseconds(500));
            obs.Subscribe(x => { /*Do nothing but simply run the observable*/ });
            Console.ReadLine();
        }
    }
}

Утечка памяти - это растущая коллекция:

System.Reactive.Disposables StableCompositeDisposable.Binary
System.Reactive.Disposables SingleAssignmentDisposable

Я использую этот API неправильно? Стоит ли ожидать увеличения памяти или это ошибка в Reactive?

Ответы на вопрос(1)

Ваш ответ на вопрос