使用.NET的多个线程调用外部WebService

时间:2015-11-26 16:20:25

标签: c# multithreading web-services asynchronous parallel.foreach

我是并行编程的新手,但我搜索了很多博客和其他网站(包括SO)以实现以下目标:我需要调用外部网络服务(我不会这样做)有多次代码访问权限。每个调用大约需要10秒钟来处理,所以我决定使用Parallel来获得性能。

    public BlockingCollection<TransacaoResponse> ExecutarAsync(TransacaoRequest request)
    {
        BlockingCollection<TransacaoResponse> listResponse = new BlockingCollection<TransacaoResponse>();
        Parallel.ForEach<Item>(request.Itens, new ParallelOptions() { MaxDegreeOfParallelism = 10 }, (c) =>
        {
            TransacaoResponse responseInner = new TransacaoResponse();
            int result = _operadora.EnviarTransacao(request.Codigo);
            responseInner.Status = result;
            listResponse.Add(responseInner);
        });
        return listResponse;
    }

即使使用Parallel.ForEach和BlockingCollection,也需要50秒才能返回结果(我测试过这个方法5次),与标准Foreach相比。我错过了什么?这段代码中是否存在瓶颈?感谢。

0 个答案:

没有答案