代码之家  ›  专栏  ›  技术社区  ›  user9393635

我怎么能把这个换成任务。WhenAll()实现并行循环()?

  •  0
  • user9393635  · 技术社区  · 7 年前

    我有下面的代码,检查跨域的用户组授权。代码使用各种域组合检查授权:

    //build domain combos for lookup
    var domainCombos = new List<Tuple<string, string>>();
    domainCombos.Add(new Tuple<string, string>("corp-domain-1", "corp-domain-1"));
    domainCombos.Add(new Tuple<string, string>("corp-domain-1", "corp-domain-2"));
    domainCombos.Add(new Tuple<string, string>("corp-domain-2", "corp-domain-2"));
    domainCombos.Add(new Tuple<string, string>("corp-domain-2", "corp-domain-1"));
    
    var results = await Task.WhenAll(domainCombos.Select(domainCombo =>
    {
        request.GroupDomainName = domainCombo.Item1;
        request.UserDomainName = domainCombo.Item2;
        return GetSingleAuthorizedGroupInfo(request);
    }));
    var aggregateResults = results.Where(x => x != null).SelectMany(result => result).ToList();
    return aggregateResults;
    

    我认为这是一个很好的候选人并行.ForEachb/c对GetSingleAuthorizedGroupInfo()的调用之间没有相互依赖关系。

    0 回复  |  直到 7 年前
    推荐文章