列表上的异步功能

时间:2012-08-02 18:21:14

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

我有一个看起来像这样的功能:

public async Task<decimal> GoToWeb(string Sym){}

通过字符串列表调用它的最佳方式是什么?

1 个答案:

答案 0 :(得分:5)

Here's MSDN上有关使用async-await并行处理multilpe任务的文章。而here's另一个专门针对任务集合。

简而言之,您可以执行以下操作之一:

  1. 启动所有任务,然后await每个任务。它们都将并行运行,一旦完成,程序将继续运行。

  2. 将您的任务放入集合中,然后使用await Task.WhenAll等待多项任务。

  3. 第二种方法的一个例子如下:

    List<string> Syms = ... // Create your list of strings
    IEnumerable<Task<decimal>> tasks = from Sym in Syms select GoToWeb(Sym);
    decimal[] results = await Task.WhenAll(tasks);