Почему элементы не записываются в консоль сразу после обработки?C#

Место общения программистов C#
Anonymous
Почему элементы не записываются в консоль сразу после обработки?

Сообщение Anonymous »

У меня есть следующий код C#:

Код: Выделить всё

var rand = new Random(1);
var range = Enumerable.Range(1, 8);
var partition = Partitioner.Create(range, EnumerablePartitionerOptions.NoBuffering);
foreach (var x in partition
.AsParallel()
.AsOrdered()
.WithMergeOptions(ParallelMergeOptions.NotBuffered)
.WithDegreeOfParallelism(4)
.Select(DoSomething))
{
Console.WriteLine($"---- {x} {DateTime.Now.TimeOfDay} " +
$"{Thread.CurrentThread.ManagedThreadId}");
}

int DoSomething(int x)
{
Console.WriteLine($"WAIT {x} {DateTime.Now.TimeOfDay} " +
$"{Thread.CurrentThread.ManagedThreadId}");
int random;
lock (rand) { random = rand.Next(2000); }
Thread.Sleep(random); //fake work being done
Console.WriteLine($"DONE {x} {DateTime.Now.TimeOfDay} " +
$"{Thread.CurrentThread.ManagedThreadId}");
return x;
}
Вот результат:

Код: Выделить всё

WAIT 2 13:51:08.8398170 10
WAIT 1 13:51:08.8398197 9
WAIT 3 13:51:08.8398132 11
WAIT 4 13:51:08.8398108 4
DONE 1 13:51:09.0805471 9 

Подробнее здесь: [url]https://stackoverflow.com/questions/79825526/why-are-items-not-written-to-console-immediately-after-being-processed[/url]

Вернуться в «C#»