【问题标题】:Getting better control on when thread starts in AsParallel在 AsParallel 中更好地控制线程何时启动
【发布时间】:2015-01-04 23:21:20
【问题描述】:

下面的代码将在单独的线程中运行 ChanceOfWinningMillionDollarJackpot,这非常酷。但是,这些线程会立即开始工作,而使用常规 C# Thread 类,您可以使用 Thread.Start 方法控制工作何时开始。在使用 AsParallel 设置并行查询时,我是否可以获得相同的控制?

static void Main(string[] args)
{
     Task<double>[] e = Enumerable.Range(1, 10).AsParallel().Select(n => ChanceOfWinningMillionDollarJackpot(n)).ToArray();
}

private static Task<double> ChanceOfWinningMillionDollarJackpot(int n)
{
    //whatever
}

【问题讨论】:

    标签: c# .net multithreading task plinq


    【解决方案1】:

    您需要将列表作为 IEnumerable 返回。然后,只有当您查询可枚举时,代码才会真正执行。

    var enumerable = Enumerable.Range(1, 10).AsParallel()
        .Select(n => ChanceOfWinningMillionDollarJackpot(n)).AsEnumerable();
    
    var list = enumerable.ToList();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-12
      相关资源
      最近更新 更多