分不同的情况
如果是channel返回的只有一个值,对应的c#里面直接await协程或是task.whenany即可,不需要channel的介入。
如果协程会持续返回值,不停的向channel发送值,可以使用下面这个代码示例
var s1 = Observable.Interval(TimeSpan.FromMilliseconds(250)).Take(3);
var s2 = Observable.Interval(TimeSpan.FromMilliseconds(150)).Take(5).Select(i => i + 100);
s1.Merge(s2).Subscribe(Console.WriteLine,()=>Console.WriteLine("Completed"));
也可以使用dataflow中最简单的ActionBlock<TInput>
Merge或ActionBlock的另外一个好处在于,在没有值可以处理的间隙,只有两个协程是活着的,而go似乎是3个?
【 在 javafish 的大作中提到: 】
: 问一下
: select channel在Rx里咋实现的?
: 垒一串zipWhen么?
: ...................
--
FROM 123.115.136.*