如何使用Observable.Generate在控制台中输出

时间:2014-08-01 01:53:15

标签: c# system.reactive

为什么以下代码不产生输出?

这是一个生成一些随机值的控制台应用程序(我正在学习Reactive Extensions)。

using System.Reactive.Linq;

static void Main(string[] args)
{   
    var rand = new Random();
    Observable.Generate(
        5.0,
        i => i > 0,
        i => i + rand.NextDouble() - 0.5,
        i => i,
        i => TimeSpan.FromSeconds(0.1)
    ).Subscribe(Console.WriteLine);  
}

1 个答案:

答案 0 :(得分:4)

Observable表示异步数据流。因为您将时间跨度传递给Generate,所以数字生成发生在后台线程中。

当您的Main函数退出时,主线程退出。当主线程退出时,后台线程将被终止。

由于Main函数将在0.1秒之前退出,因此您的生成器没有时间生成任何内容。尝试将Console.ReadLine();添加到Main函数的末尾,以便在按下某个键之前不会终止后台线程。