Schließen eines bestimmten Batch-Fensters -> Event verarbeiten

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Schließen eines bestimmten Batch-Fensters -> Event verarbeiten

    Hallo,

    ich rufe in meinem VB-Programm eine batch-Datei auf, welche lange andauernde Testdurchläufe eines Programmes mit diversen Parametern startet. Sind diese Testdurchläufe vorbei (zwischen 2 Minuten und drei Tagen), so schließt sich die Batch-Datei automatisch. Nun hätte ich gerne, dass dieses "schließen-Event" der Batch-Datei vom VB-Programm erkannt wird, so dass es automatisch beginnen kann, die Auswertungen einzulesen.

    LG


    Edit: war doch einfacher als gedacht ;) gibt es für folgenden Code noch eine bessere Möglichkeit?

    VB.NET-Quellcode

    1. While Not xtTestProcess.HasExited
    2. Threading.Thread.Sleep(10000)
    3. End While

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „stevez“ ()

    Du kannst mit der Prozess Klasse nach dem Start des Prozesses mit der Methode WaitForExit auf die Beendigung des Programms warten.
    Hier wird gewartet bis das Programm geschlossen wird und erst dann die nächste Codezeile ausgeführt.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Hast Du Deinen Thread versehentlich als Erledigt markiert? Ein weiterer Post von Dir öffnet ihn wieder.

    stevez schrieb:

    VB.NET-Quellcode

    1. While Not xtTestProcess.HasExited
    2. Threading.Thread.Sleep(10000)
    3. End While
    Dieser Konstrukt blockiert Dein Programm völlig.
    Entweder Du deklarierst Deine Process-Instanz mit WithEvents und kannst dann die entsprechenden Events abfangen (teste dies mit einem Notepad) oder Du fragst die HasExited-Property in einem Timer-Tick-Event ab.
    Oder Du machst aus dieser Batch-Datei ein separates VB-Programm.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    habs gemerkt, hab es so gemacht wie fichz - mein Programm soll sowieso nichts machen, wären die Tests durchlaufen. Es soll einfach nur weiter laufen, wenn diese beendet sind.

    process.WaitForExit() ist dafür optimal.

    Oder Du machst aus dieser Batch-Datei ein separates VB-Programm
    Die Batch-Datei hat um die 500 Zeilen, das gebe ich mir jetzt nicht ^^
    schreib doch 2 Programme. Eins zum Konfigurieren und Starten der Batch, und eins zum Analysieren der Batch-Ausgabe.
    Verpass der Ausgabe-Datei eine spezifische Endung, dann kannst du im win-Explorer per "Öffnen mit..."-Kontextmenü dein Analyse-Prog damit verknüpfen, und fürderhin per Doppelklick deine Ausgabe-Dateien mit deim AnalyseProg öffnen.

    Eine Anwendung absichtlich einfrieren geht gar nicht. Eingefrorene Anwendungen fasst der User mit Sicherheit als abgestürzt auf, und wird die mittm Taskmanager abschießen u.ä.
    Insbesondere, wenn sie

    stevez schrieb:

    zwischen 2 Minuten und drei Tagen
    laufen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!