Почему элементы не записываются в консоль сразу после обработки?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]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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