代码在LinqPad中并行运行,但不在控制台应用程序中并行运行...为什么?

戴维·科恩(David Korn)

我需要针对不同的日期范围对单个Web服务进行一系列调用,并生成一个串联的结果集。尽管我在这方面的经验有限,但我想同时拨打电话以加快流程。

我尝试了几种技术,但是基于执行时间,当我在Visul Studio控制台应用程序中运行代码调用时,它们会继续按顺序运行。我的意思是,如果一个月的日期范围内的通话花费15秒,那么这些一个月的通话中的三个通话(据说是并行运行)将花费45秒。

但是,这部分确实让我感到惊讶:我开始在LinqPad中运行完全相同的代码,以简化调试。瞧,在LinqPad中,相同的代码可以并行运行!通话3个月大约需要15秒钟!

现在,我正在摸索如何做到这一点。我尝试将LinqPad版本复制到新的conole项目中(以再次检查两个版本中的所有内容是否确实相同),但不会改变行为。

我将不胜感激任何建议。我不确定哪个代码与此问题相关,但是下面包含了一个稍微简化的Web服务调用类版本:

class Importer
{
    public List<FuncDetails> GetAllData(DateRange[] intervals)
    {
        Task<List<PropFuncsType>>[] tasks = intervals
            .ToList()
            .Select(interval => GetDataForIntervalAsync(interval.StartDate, interval.EndDate))
            .ToArray();

        var result = new List<ResultDataTable>();
        Task.Factory.ContinueWhenAll(tasks, results => { foreach (var output in results) { result.AddRange(output.Result); } })
        .Wait();

        return result.SelectMany(x => x.ResultDataRow).ToList();

    }

    async static private Task<List<ResultDataTable>> GetDataForIntervalAsync(DateTime startDate, DateTime endDate)
    {
        var service = new ServiceClient();

        var result = await service.getDataAsync(new ServiceRequest()
            {
                startDate = string.Format("{0:yyyy-MM-dd}", startDate),
                endDate = string.Format("{0:yyyy-MM-dd}", endDate)
            }
        );

        return result.ServiceResponse.ToList();
    }
}
斯蒂芬·克莱里(Stephen Cleary)

尝试设置ServicePointManager.DefaultConnectionLimitint.MaxValue控制台应用程序启动时。这是.NET上HTTP节流的常见但细微的原因。

(大概是LINQPad已经做了类似的事情)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么线程似乎没有在此代码中并行运行?

来自分类Dev

为什么我的ThreadID在并行运行的10个任务中不是唯一的?

来自分类Dev

为什么我的Minitest测试没有并行运行?

来自分类Dev

为什么我的Rust线程不能并行运行?

来自分类Dev

为什么我的Minitest测试没有并行运行?

来自分类Dev

Apache Camel split 与 ThreadPool 并行运行,为什么?

来自分类Dev

为什么 async.each 不并行运行迭代?

来自分类Dev

为什么我的诺言(并行运行和串行运行)同时完成

来自分类Dev

为什么在提示文字时C#控制台应用程序会停止运行?

来自分类Dev

为什么运行控制台应用程序的容器在启动后仅退出

来自分类Dev

为什么在提示文字时C#控制台应用程序会停止运行?

来自分类Dev

为什么我的控制台应用程序从System32运行?

来自分类Dev

为什么我不能从控制台运行 hibernate maven 应用程序?

来自分类Dev

为什么我的线程不能使用Java ExecutorService并行运行?

来自分类Dev

Bash-为什么这两个命令在循环中连续而不是并行运行?

来自分类Dev

为什么在并行运行时numpy随机种子不能保持固定,但是RandomState是?

来自分类Dev

为什么我的线程不能使用Java ExecutorService并行运行?

来自分类Dev

Python:为什么同一函数的 2 个调用不能并行运行?

来自分类Dev

为什么某些Unicode字符导致std :: wcout在控制台应用程序中失败?

来自分类Dev

并行运行多个应用程序?

来自分类Dev

为什么从Git Bash运行.net核心控制台应用程序时,ReadKey会引发异常?

来自分类Dev

Dart控制台应用程序中的退出代码139是什么意思?

来自分类Dev

Dart控制台应用程序中的退出代码139是什么意思?

来自分类Dev

为什么我的Java程序在控制台而不在Eclipse中工作?

来自分类Dev

当GUI应用程序运行良好时,为什么没有ODEX文件的控制台android java应用程序不能正常工作?

来自分类Dev

为什么在 Visual Studio 中用 C++ 编写 GUI 应用程序的代码与控制台应用程序不同?

来自分类Dev

为什么异步/等待在我的ASP.net 5控制台应用程序中不起作用?

来自分类Dev

当我从控制台应用程序中打开Windows窗体布局时,为什么它会更改?

来自分类Dev

在Visual Studio 2015中重新加载Designer时,为什么会弹出控制台应用程序?

Related 相关文章

  1. 1

    为什么线程似乎没有在此代码中并行运行?

  2. 2

    为什么我的ThreadID在并行运行的10个任务中不是唯一的?

  3. 3

    为什么我的Minitest测试没有并行运行?

  4. 4

    为什么我的Rust线程不能并行运行?

  5. 5

    为什么我的Minitest测试没有并行运行?

  6. 6

    Apache Camel split 与 ThreadPool 并行运行,为什么?

  7. 7

    为什么 async.each 不并行运行迭代?

  8. 8

    为什么我的诺言(并行运行和串行运行)同时完成

  9. 9

    为什么在提示文字时C#控制台应用程序会停止运行?

  10. 10

    为什么运行控制台应用程序的容器在启动后仅退出

  11. 11

    为什么在提示文字时C#控制台应用程序会停止运行?

  12. 12

    为什么我的控制台应用程序从System32运行?

  13. 13

    为什么我不能从控制台运行 hibernate maven 应用程序?

  14. 14

    为什么我的线程不能使用Java ExecutorService并行运行?

  15. 15

    Bash-为什么这两个命令在循环中连续而不是并行运行?

  16. 16

    为什么在并行运行时numpy随机种子不能保持固定,但是RandomState是?

  17. 17

    为什么我的线程不能使用Java ExecutorService并行运行?

  18. 18

    Python:为什么同一函数的 2 个调用不能并行运行?

  19. 19

    为什么某些Unicode字符导致std :: wcout在控制台应用程序中失败?

  20. 20

    并行运行多个应用程序?

  21. 21

    为什么从Git Bash运行.net核心控制台应用程序时,ReadKey会引发异常?

  22. 22

    Dart控制台应用程序中的退出代码139是什么意思?

  23. 23

    Dart控制台应用程序中的退出代码139是什么意思?

  24. 24

    为什么我的Java程序在控制台而不在Eclipse中工作?

  25. 25

    当GUI应用程序运行良好时,为什么没有ODEX文件的控制台android java应用程序不能正常工作?

  26. 26

    为什么在 Visual Studio 中用 C++ 编写 GUI 应用程序的代码与控制台应用程序不同?

  27. 27

    为什么异步/等待在我的ASP.net 5控制台应用程序中不起作用?

  28. 28

    当我从控制台应用程序中打开Windows窗体布局时,为什么它会更改?

  29. 29

    在Visual Studio 2015中重新加载Designer时,为什么会弹出控制台应用程序?

热门标签

归档