在Rx中,下面的代码似乎不调用我的OnCompleted操作?
没有“序列完成”
static void Main(string[] args)
{
var list = new List<int> { 1, 2, 3 };
var obs = list.ToObservable();
IDisposable subscription = obs.SubscribeOn(Scheduler.NewThread).Subscribe(p =>
{
Console.WriteLine(p.ToString());
Thread.Sleep(200);
},
p => Console.WriteLine("Sequence completed"));
Console.ReadLine();
subscription.Dispose();
}我是不是在做傻事,因为控制台窗口中没有打印3之后的“已完成序列”?
控制台输出
1
2
3
_因此,我问题的主要焦点是如何在这种类型的序列被迭代之后运行一些代码。
Console.WriteLine("Sequence completed"))?.ToObservable起源于IEnumerable (本例中为List<> )。NewThread上运行。发布于 2011-09-27 19:07:16
问题是,.Subscribe的第二个参数是错误回调。只有在观察元素时出错时,才会打印“已完成的序列”字符串。
以下是修正后的代码:
var list = new List<int> { 1, 2, 3 };
var obs = list.ToObservable();
var subscription = obs.SubscribeOn(Scheduler.NewThread).Subscribe(p =>
{
Console.WriteLine(p.ToString());
Thread.Sleep(200);
},
error => Console.WriteLine("Error!"),
() => Console.WriteLine("sequence completed"));
Console.ReadLine();
subscription.Dispose();https://stackoverflow.com/questions/7571406
复制相似问题