2016-08-30 4 views
0

Team,Mehrere Threads parallel über die Befehlszeile ausführen

Ich habe eine C# -Konsolen-App, die die eventlog.config aktualisiert. Jetzt möchte ich die Rennbedingungen simulieren, indem ich die Main-Funktion mit Kommandozeilenparametern aufrufen.

So zum Beispiel, wenn i Öffnen einer ersten Eingabeaufforderung und weist auf den „anwendung.exe“ und dann anwendung.exe -en Typ [params] -t [params]

einen zweiten Befehl öffnen Prompt auf die gleiche anwendung.exe und dann anwendung.exe -e type [params] -t [params]

Wie stelle ich sicher, dass diese beide parallel läuft, so dass die Rennbedingungen simuliert und Ich erhalte den Fehler, während die "Konfigurationsdatei verwendet wird"

+2

Wenn Sie Ihre App mehrmals ausführen (sei es innerhalb derselben oder verschiedener Konsolenfenster), erstellen Sie verschiedene * Prozesse * anstelle von * Threads *. Allerdings ist die App nur Thread-sicher, aber definitiv nicht prozesssicher. – HimBromBeere

+1

Semaphore kann Ihnen helfen – Roar

Antwort

0

Ich bin nicht wirklich sicher, ob ich Ihre Frage richtig verstanden habe, aber wenn Sie ein anderes Konsolenfenster öffnen, bedeutet dies einen komplett neuen Prozess, der startet. Normalerweise sollte dies für Threads in Ihrem Szenario keinen Unterschied machen. Es ist eine Frage des Timings, beide gleichzeitig zu betreiben. Es kann besser sein, die Anwendung nur einmal zu starten, aber Threads zu verwenden (z. B. die Thread-Klasse) und das Timing mit Thread.Sleep() zu erzwingen.

+0

ok..Sie wollen sagen..Einführung Threading innerhalb der Konsole App-Code und erstellen sagen, nehmen Sie 10 Threads jeder Aufruf der Zielfunktion und dann nur eine einzige Instanz der exe innerhalb der Eingabeaufforderung laufen. –

+0

Warum nicht? Es hängt natürlich davon ab, was Sie wirklich erreichen wollen. Für grundlegende Testzwecke Ihres Konfigurationsverriegelungsmechanismus etc. sollte dies ausreichend sein. Aber wie HimBromBeere erwähnt wird, sind Thread- und Prozesssicherheit zwei etwas unterschiedliche Dinge und man muss wissen, was man will. Wenn die Prozesssicherheit gewährleistet sein muss, sollten Sie lieber zwei Konsolen starten. –

+0

BTW Sie können Befehle auch mehrmals im Hintergrund ausführen, indem Sie "start/b Application.exe" mehrmals im Konsolenfenster eingeben. –

Verwandte Themen