使用基于任务的方法而不是事件/回调发送多个响应

时间:2014-04-29 06:28:46

标签: c# callback async-await c#-5.0 asynccallback

最近在C#4.0中,异步编程的基于任务的方法已经公布。所以我们试图开发一些早期使用回调的函数。

我们面临的问题是使用任务为函数实现多个响应。例如。我们有一个从第三方API获取一些数据的函数。但是在从API获取数据之前,我们首先检查我们是否已经在内存缓存或数据库中使用它,然后我们才进入API。主客户端应用程序发送对要获取数据的符号列表的请求。如果我们在缓存或DB中找到某些符号的数据,我们会立即通过回调发送它。对于剩余的符号,我们请求API。

这给出了对某些符号的客户端应用程序的实时处理感。对于其他符号,用户会知道这需要时间。如果我不立即向客户端发送响应并首先收集所有数据,然后仅发送整个列表的响应,那么即使从API中仅提取1个符号,用户也将被卡住99个符号。

如何使用基于任务的方法发送多个响应?

1 个答案:

答案 0 :(得分:0)

您似乎希望拥有一个不止一次返回的异步方法。答案是你不能。 您可以做的是:

  1. 使用相同的“符号”调用2种不同的方法。第一个检查缓存和数据库并返回它可以执行的操作,第二个调用远程API。通过这种方式,您可以从缓存中快速获得所需内容,其余内容则更慢。
  2. 继续使用回调作为“迷你制作人消费者”设计,以便您可以多次调用它。
  3. 如果您发布正在使用的代码,我可以尝试更具体的答案。