Tuesday, 14 March 2017

Waitforexit Prozessablauf


Ich benutze folgenden Code, um den PATH, EXECUTABLE NAME und ARGUMENTS zu einer Batch-Datei zu schreiben und ihn über CMD mit c auszuführen. Das Problem ist manchmal die Anwendung dosent startet nach dem Ausführen der Batch-Datei. Und die c-Code-Dosis gibt mir Ausnahmen oder irgendeine Benachrichtigung. Für die ich den Exitcode von CMD erhalten möchte, um festzustellen, ob die Befehle ordnungsgemäß ausgeführt wurden. Wie kann ich den Exit-Code bestimmen. Skript in Batchfile. Beachten Sie, dass Notepads. exe falsch ist, den Fehler zu erhalten, wenn ERRORLEVEL 1 exit B 1I viele Foren für inkonsistentes Verhalten von Process. WaitForExit () - Methode überprüft habe, aber ich konnte das eigentliche Problem nicht identifizieren. Ich habe den unten genannten Code Über Code ruft BCP. exe auf, um Daten in temp-Datei auszugeben. Diese Datei wird dann von zwei Threads (Leser und Schreiber) gelesen, um nach einer späteren Bearbeitung auf eine andere Datei zu schreiben. ProcessExited-Methode ist wie folgt: Das Problem ist, dass der Haupt-Thread quotSOMETIMESquot nicht auf process. WaitForExit () - Methode wartet und schließlich der Haupt-Thread schläft für die Zeit und dann die Ausführung fließt zum Haupt-Anrufer. Der Reader Thread und Writer Thread nur abrupt endet und die Datei nicht vollständig verarbeitet wird daher der Fehler. Die meisten (95) der Zeit dieser Code funktioniert perfekt, aber es wird beobachtet, dass, wenn es Last auf dem Server dann finden wir dieses inkonsistente Verhalten und damit der Fehler. Ich bin mir sicher, dass der BCP-Prozess komplett läuft, da wir die von BCP erstellte Datei überprüft haben. Ich muss wissen, warum es dieses inkonsistente Verhalten gibt Der Code wird auf 3.5 eingehalten und der Framework auf Produktion ist 3.5 SP1. Wie kann dieses inkonsistente Verhalten gelöst werden Danke für eure Hilfe. Freitag, 15. Juli 2011 18:14 Das ist nicht unbedingt richtig. Überlegen Sie, was passieren würde, wenn WaitForExit richtig funktioniert. Dann wird die processExited-Methode aufgerufen, aber auf dieser ersten Zeile - bevor die erste Zeile gedruckt wird - der Computer entscheidet, dass es eine gute Zeit wäre, auf den anderen Thread zu wechseln. Der Hauptfaden geht weiter bis zur Schlaflinie. Sobald der Hauptfaden schläft, wird die Methode processCompleted fortgesetzt. Denken Sie daran, dass der Computer willkürlich entscheiden, Fäden zu jedem Zeitpunkt zu wechseln, wann immer es will. Wenn Sie mehrere Threads laufen lassen, können Sie nicht garantieren, dass eine bestimmte Methode vor einem anderen getroffen wird. Mit Sleep ist nicht eine zuverlässige Möglichkeit, Threads zu synchronisieren, weil das Betriebssystem jederzeit umgehen kann, nicht nur, wenn Sie sich entscheiden zu schlafen. Als Nebennote, in diesem Fall kombinieren Sie zwei verschiedene Möglichkeiten der Überprüfung für den Prozess zu beenden. Wenn Sie wirklich wollen, dass das processCompleted-Ereignis aufgerufen wird, bevor der Haupt-Thread schläft, warum nicht so synchron wie folgt: Ersetzen Sie Ihre processExited-Veranstaltung und legen Sie einfach alles in DoOtherStuff (). Wenn Ihr Code synchron ausführen muss, ist die einfachste Option nur, um es synchron zu machen. Check out Mein Blog für Tech News, Entwicklung Tipps und andere Informationen für Geeks wie mich. Markiert als Antwort von maverick1979 Freitag, 15. Juli 2011 18:27 Uhr Wie weißt du, dass der Thread nicht auf WaitForExit wartet () Und was meinst du eigentlich damit - dass processExited ist Hit, bevor die bcpFileName-Datei erstellt wird Was ist das Verhalten, das du siehst, ist vollkommen möglich, dass dies nur durch die Fäden verursacht werden könnte, die zu unvorhergesehenen Zeiten schlafen. Check out Mein Blog für Tech News, Entwicklung Tipps und andere Informationen für Geeks wie mich. Freitag, 15. Juli 2011 18:58 Es ist, weil die Log-Nachricht (und Zeit in Log-Nachricht), die zeigt, dass Thread. Sleep sofort aufgerufen wird. Umleitung von BCP-Prozess Standardfehler von: NAM in Protokolldatei Schlaf für 10 Millisekunden Fehler aus BCP Prozess empfangen (falls vorhanden): 0 Exit State of BCP Prozess: 0 BCP Abgeschlossen für: NAM Logging sollte und ist, wenn Code funktioniert (und ich Haben diese Protokollierung überprüft, wenn der Code gut funktioniert) Umleitung des BCP-Prozesses Standardfehler von: NAM zum Protokollieren von Datei Fehler aus BCP Prozess empfangen (falls vorhanden): 0 Exit Zustand des BCP-Prozesses: 0 BCP Abgeschlossen für: NAM Sleeping für 10 Millisekunden Editiert von Maverick1979 Freitag, 15. Juli 2011 19:44 Formatierung Das ist nicht unbedingt richtig. Überlegen Sie, was passieren würde, wenn WaitForExit richtig funktioniert. Dann wird die processExited-Methode aufgerufen, aber auf dieser ersten Zeile - bevor die erste Zeile gedruckt wird - der Computer entscheidet, dass es eine gute Zeit wäre, auf den anderen Thread zu wechseln. Der Hauptfaden geht weiter bis zur Schlaflinie. Sobald der Hauptfaden schläft, wird die Methode processCompleted fortgesetzt. Denken Sie daran, dass der Computer willkürlich entscheiden, Fäden zu jedem Zeitpunkt zu wechseln, wann immer es will. Wenn Sie mehrere Threads laufen lassen, können Sie nicht garantieren, dass eine bestimmte Methode vor einem anderen getroffen wird. Mit Sleep ist nicht eine zuverlässige Möglichkeit, Threads zu synchronisieren, weil das Betriebssystem jederzeit umgehen kann, nicht nur, wenn Sie sich entscheiden zu schlafen. Als Nebennote, in diesem Fall kombinieren Sie zwei verschiedene Möglichkeiten der Überprüfung für den Prozess zu beenden. Wenn Sie wirklich wollen, dass das processCompleted-Ereignis aufgerufen wird, bevor der Haupt-Thread schläft, warum nicht so synchron wie folgt: Ersetzen Sie Ihre processExited-Veranstaltung und legen Sie einfach alles in DoOtherStuff (). Wenn Ihr Code synchron ausführen muss, ist die einfachste Option nur, um es synchron zu machen. Check out Mein Blog für Tech News, Entwicklung Tipps und andere Informationen für Geeks wie mich. Als Antwort von maverick1979 markiert Freitag, 15. Juli 2011 20:27 Freitag, 15. Juli 2011 19:48 Uhr

No comments:

Post a Comment