【发布时间】:2019-06-12 19:35:19
【问题描述】:
我有一个公开以下可观察序列的类:
internal IObservable<TaskDoneEventArgs> WhenTaskDone => Observable
.FromEventPattern<TaskDoneEventHandler, TaskDoneEventArgs>(
handler => NiTask.Done += handler,
handler => NiTask.Done -= handler)
.Select(x => x.EventArgs);
每当从序列中观察到新项目时,我想执行一些异步 TPL 逻辑。据我了解,SelectMany() 是处理异步逻辑的好方法。但是,我无法正确获取语法。
以下是我的尝试,但它不会编译:
_output.WhenTaskDone
.SelectMany(async _ => await StopDelivery())
.Subscribe(_ => Debug.WriteLine("Delivery stopped"));
我收到以下与SelectMany() 相关的错误:
Error CS0411: The type arguments for method 'Observable.SelectMany<TSource, TOther>(IObservable<TSource>, IObservable<TOther>)' cannot be inferred from the usage. Try specifying the type arguments explicitly. (85, 18)
StopDelivery()函数的签名如下:
internal Task StopDelivery()
我在这里错过了什么和做错了什么?
【问题讨论】:
标签: c# observable reactive-programming system.reactive