我有几个异步API,它们使用回调或事件而不是async。我成功地使用TaskCompletionSource对它们进行了as described here包装。
现在,我想使用一个返回IObservable<T>并产生多个对象的接口。我读到了关于.NET的Rx,这似乎是一条可行的道路。然而,我在犹豫是否要包含另一个依赖项和另一个新的范式,因为我已经在这个应用程序中使用了很多对我来说都很新的东西(比如XAML、MVVM、C#的async/await)。
有没有类似于包装单个回调IObservable<T>的方法来包装API?我想这样调用API:
foreach (var t in GetMultipleInstancesAsync()) {
    var res = await t;
    Console.WriteLine("Received item:", res);
}发布于 2019-12-29 18:14:33
如果你想使用Rx,那么你可以使用你的返回列表:
GetMultipleInstancesAsync().ToObservable().Subscribe(...);您可以订阅OnCompleted/OnError处理程序。
你也可以把它包装成一个任务列表:
var result = await Task.WhenAll(GetMultipleInstancesAsync().ToArray());所以你得到了一个结果数组,你就完成了。
https://stackoverflow.com/questions/59518323
复制相似问题