从异步方法返回部分结果

我有一个类,该类调用Web服务以异步检索数据。为了提高性能,我实现了客户端缓存,该缓存检查请求的数据是否在本地可用。该类返回存储在缓存中的所有数据,并调用Web服务以获取剩余数据。

我可以将缓存的数据返回给呼叫者,然后继续进行网络呼叫,还是我必须进行呼叫并返回完整的数据集?

在同步环境中,我可以yield return与Tasks一起使用,并且无法实现异步/等待收益。

我怎么解决这个问题?


胡子哥哥
浏览 176回答 2
2回答

幕布斯6054654

这些建议都无法完美地解决我的问题,但可以结合使用。首先,我使用TPL DataFlow库创建了一个管道来从我的源中获取数据。然后将结果发布到BufferBlock<T>末尾的,作为暴露给最终用户IObservable<T>。这具有额外的好处,即我现在可以通过其他块轻松查询相关数据。
打开App,查看更多内容
随时随地看视频慕课网APP