Ein Restarter für ein Programm schreiben

DJCueForce

Mitglied
Hallo,

Ich wollte einmal fragen, wie ich für eine exe einen Restarter basteln kann, der wenn die exe crasht , nach einem interval von sagen wir mal 5 sek. die exe wieder startet?!
Das ganze wollte ich eigentlich in C# realisieren aber C++ der VB sollte bei genaueren erklärenungen auch möglich sein.
Einen ansatz habe ich - die form des Programmes beinhaltet ledetlich: Start. Stop, Restarter ein Restarter aus

diese 4 buttons sollten mit darin sein...
würde mich über jede hilfe und erklärung freuen!!

MFG
CueForce
 
Hi

Mit Application.Restart() kannst du die Anwendung neustarten.

Hoffe das hat dir schon mal geholfen,

Gruß x y z
 
Hallo,

evl. ist es etwas falsch rüber gekommen.... Ich will nicht meine eigene anwendung neustarten starten oder restarten. Sondern meine exe heißt nacher dann restarter.exe
die anwendung die gestartet / gestoppt / restartet werden soll wenn diese exe ungewoll crahst also sich einfach schließt soll "überwacht" werden.

MFG
CueForce
 
Du brauchst dazu gar keine zweite Exe-Datei. Starte dein Programm einfach über eine Sub Main. Darin startest du das eigentliche Programm. Drum herum baust du einen Try-Catch-Block, der Application.Restart ausführt, wenn ein Fehler auftritt.
Könnte in VB so aussehen:
Code:
Public Sub Main
Try
' dein Programm-Code
Catch ex As Exception
System.Windows.Forms.Application.Restart()
End Try
End Sub
EDIT:
Mit VB kannst du auch das Event
Code:
Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.UnhandledException
abonnieren.
Das könnte dann zum Beispiel so aussehen:
Code:
Namespace My

    ' The following events are available for MyApplication:
    ' 
    ' Startup: Raised when the application starts, before the startup form is created.
    ' Shutdown: Raised after all application forms are closed.  This event is not raised if the application terminates abnormally.
    ' UnhandledException: Raised if the application encounters an unhandled exception.
    ' StartupNextInstance: Raised when launching a single-instance application and the application is already active. 
    ' NetworkAvailabilityChanged: Raised when the network connection is connected or disconnected.
    Partial Friend Class MyApplication

        Private Sub MyApplication_UnhandledException(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException
            MessageBox.Show("Fehler! Programm wird neu gestartet!")
            System.Windows.Forms.Application.Restart()
        End Sub
    End Class

End Namespace
 
Zuletzt bearbeitet:
Hallo,

Doch ich brauche eine 2te exe.
da mein programm ein "Addon" für einen Server ist. Diesen server kann ab und zu mal Crashen = Down. mit meinem "Addon" will ich dieses verhindern bzw ehr wenn ich nicht zuhause bin der server von selber neustartet.
 
Ok verstehe.
Du könntest den Prozess überwachen. Im Namespace System.Diagnostics findest du praktische Klassen dafür.
Prozess starten:
Code:
Dim MeinProzess As System.Diagnostics.Process = System.Diagnostics.Process.Start("C:\Programm.exe")
Dann mit dem Process.Exited-Event darauf warten, dass sich der Prozess beendet.
Oder falls du den Server nicht aus deinem Tool heraus starten willst, dann mit
Code:
System.Diagnostics.Process.GetProcesses()
den Server-Prozess suchen.
 
Wenn du Fragen hast, dann stell sie hier oder schau auch mal in den Tutorials-IRC-Channel auf irc.tutorials.de
Falls du Probleme hast C# Code nach VB zu übersetzen, dann verwende z.B. diesen CodeTranslator.
 
Aber so bekomme ich doch nur eine info ob es leuft oder nicht. Ich will ja aber eigentlich das er alle 5 sek. selber prüft und wenn aus = Server starten...
Wird dort außerdem von enier konsolen anwenung ausgegangen oder einem Screen Programm? bei mir ist es nämlich so das der server unter einer Konsolenanwendung von Visual C++ leuft... und damit auch kompl. woreden ist ( evl. ist der begriff Trinity euch leufig) dabei handelt es sich um einen Emulator für ein Spiel.
Da dieser wie oben beschreiben durch fehler in der MySQL Datenbank oder sehr starker überlastung Crashen kann also down geht und ich nicht immer da bin einen restarter dafür schreiben wollte... muss nur testen ob er leuft wenn ja = Nochmal testen - wenn nicht anwendung ( trinity-core-exe ) starten...
 
Zurück