Я играл с BlockingCollection
, чтобы попытаться лучше понять их, но я изо всех сил, чтобы понять, почему мой код зависает, когда он завершит обработку всех моих вещей, когда я использую Parallel.For
BlockingCollection с Parallel.For зависает?
Я просто добавить номер для него (производителя):
var blockingCollection = new BlockingCollection<long>();
Task.Factory.StartNew(() =>
{
while (count <= 10000)
{
blockingCollection.Add(count);
count++;
}
});
Тогда я пытаюсь обработать (Consumer):
Parallel.For(0, 5, x =>
{
foreach (long value in blockingCollection.GetConsumingEnumerable())
{
total[x] += 1;
Console.WriteLine("Worker {0}: {1}", x, value);
}
});
Но когда он завершает обработку всех номеров, он просто висит там? Что я делаю не так?
Также, когда я устанавливаю свой Parallel.For до 5, означает ли это, что он обрабатывает данные на 5 отдельных потоков?
[Вы должны задать только один вопрос на вопрос.] (Http: //meta.stackexchange.com/q/39223/130186) – svick