我正在学习响应式扩展,这些天我遇到了这种情况,代码在这里:
class Program
{
private static void Main(string[] args)
{
var ls = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9 }.ToObservable();
ls.Select(m => new
{
t = Observable.Start(() =>
{
Thread.Sleep(100);
return new Random().Next(3, 20);
}),
i = m
}).Subscribe(item => item.t.Subscribe(Console.WriteLine));
Task.WaitAll();
Console.WriteLine("all done");
Console.ReadKey();
}
}
它表明 Observable 中有一个 IObservable,我想在所有过程完成后打印“all done”,但这不起作用。程序启动后“全部完成”打印得非常快,不再等待,在我这里的情况下,我应该怎么做才能获得真正的WaitAll?