Konsolenmeldungen, die in falscher Reihenfolge angezeigt werden, wenn der Fortschritt mit IProgress.Report () gemeldet wird

Ich habe folgendes Verhalten bemerkt. Konsolenausgabemeldungen werden in einem falschen Ordner angezeigt, wenn sie mit IProgress gefüllt sind.

var recounter = new IdRecounter(filePath, new Progress<string>(Console.WriteLine));
                recounter.RecalculateIds();

Ich versuche, meine Fähigkeiten in Bezug auf Kapselung, Wiederverwendbarkeit und Design zu verbessern. Also habe ich eine Klasse namens IdRecounter. Ich möchte es vorerst in einer Konsolen-App verwenden, aber später vielleicht in einer WPF-App oder was auch immer.

Daher möchte ich, dass die Klasse sich ihrer Umgebung nicht bewusst ist - aber gleichzeitig möchte ich den Fortschritt der Aktion "live" melden. Daher verwende ich den IProgress-Typ, mit dem ich Inhalte in die Konsole stellen kann. oder in eine Protokolldatei, oder aktualisieren Sie eine Status-Label-Eigenschaft usw. (Bitte lassen Sie mich wissen, wenn das nicht so ist, wie Sie es tun)

Also, ich habe bemerkt, dass es dazu neigt, Nachrichten in einer falschen Reihenfolge in die Konsole zu werfen, z. Verarbeitungsdatei 1
Processing File 4
Processing File 5
Processing File 3
Alles erledigt
Processing File 2

Wenn ich IProgress gewechselt habe MyProgress.Report()) mitConsole.WriteLine() es funktioniert wie erwartet.
Was ist der Grund dafür und wie kann es kontrolliert werden?

Vielen Dan

Antworten auf die Frage(4)

Ihre Antwort auf die Frage