Laden...

Mehrfachaufrufe einer Konsolenanwendung parallelisieren

Erstellt von Caveman vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.208 Views
Caveman Themenstarter:in
187 Beiträge seit 2009
vor 6 Jahren
Mehrfachaufrufe einer Konsolenanwendung parallelisieren

Hallo,

ich habe eine Konsolenanwendung, deren Aufruf aktuell durch Erstellen von ProcessStartInfo und Process.Start() sequentiell in einer Schleife abgearbeitet wird.
Ich möchte diese Aufrufe der Konsolenanwendung gerne Parallelisieren, so dass alle Kerne mit Arbeit versorgt werden.
Kann ich die vorhandenen Aufrufe mittels ProcessStartInfo und Process.Start() einfach in ein Parallel.ForEach packen, wie im folgenden Schnipsel?

        public static void ExecuteParallel(List<ProcessStartInfo> processStartInfoCollection)
        {
            Parallel.ForEach(processStartInfoCollection, processStartInfo =>
            {
                using (Process process = Process.Start(processStartInfo))
                {
                    process.WaitForExit();
                }
            });
        }

16.834 Beiträge seit 2008
vor 6 Jahren

Wieso probierst Du es nicht einfach?

T
156 Beiträge seit 2010
vor 6 Jahren

Ich sage mal so,
was mach denn die ConsoleApp?

Vielleicht lässt sich ja besser die Funktionalität darin parallelisieren !

Caveman Themenstarter:in
187 Beiträge seit 2009
vor 6 Jahren

@Abt: Ich hatte es probiert, bevor ich hier gefragt habe. Es scheint zu funktionieren. Aber muss ich noch was beachten?

@trashkid2000: Die Konsolenanwendung konvertiert von einem Datenformat in ein anderes. Da die Konsolenanwendung nicht von mir ist, ist es auch ausgeschlossen, die Funktionalität darin zu parallelisieren!

16.834 Beiträge seit 2008
vor 6 Jahren

@Aber muss ich noch was beachten?

Dann stell Deine Frage auch so und nicht "funktioniert das?".
Weil ob etwas funktioniert kannste einfach ausprobieren - das müssen ja wir nicht für Dich tun.

Parallelisierung brauchst Du hier nur, weil Du ein WaitForExit benutzt.
Ansonsten bräcuhtest Du es nicht - und nein; normalerweise gibts nichts genaues zu beachten.

Gilt aber natürlich niemals pauschal, weil es auch auf den Prozess ankommt, den man ausführt.
Ganz logisch.