我正在研究使用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));
Run Code Online (Sandbox Code Playgroud)
但是,以下代码与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));
Run Code Online (Sandbox Code Playgroud)
例如,这个玩具应用程序将使用VS 2015社区附带的Memory Profiler快速显示内存泄漏:
using System;
using System.Reactive.Linq;
namespace Sample
{
public class Program
{
static void Main()
{
IObservable<string> obs = …Run Code Online (Sandbox Code Playgroud)