2015-01-04 1 views
1

Код ниже будет работать ChanceOfWinningMillionDollarJackpot в отдельных потоках, который довольно круто. Однако эти потоки начинают работать сразу же, тогда как с обычным классом C# Thread вы получаете контроль над началом работы с использованием метода Thread.Start. В любом случае, я могу получить такой же контроль при настройке параллельного запроса с использованием AsParallel?Получение лучшего контроля при запуске потока в 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 
} 

ответ

1

Вам необходимо вернуть список как IEnumerable. Затем, только когда вы запрашиваете перечисление, код действительно будет выполняться.

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

var list = enumerable.ToList(); 

 Смежные вопросы

  • Нет связанных вопросов^_^