Programm Neustarten

  • VB.NET

Es gibt 29 Antworten in diesem Thema. Der letzte Beitrag () ist von schnibli.

    Programm Neustarten

    Ich würde gerne mein Programm neu Starten Lassen dazu habe ich schon folgende befehle versucht.

    VB.NET-Quellcode

    1. Dim proc As New ProcessStartInfo
    2. proc.UseShellExecute = True
    3. proc.WorkingDirectory = Environment.CurrentDirectory
    4. proc.FileName = Application.ExecutablePath
    5. Process.Start(proc)
    6. Application.Exit()

    VB.NET-Quellcode

    1. Application.Restart()
    2. Application.Exit


    Jedoch ohne erfolg.

    Ich würde gerne den Neustart ohne weitere Programme durchführen.
    Hallo,

    Wenn ich sage ich habs ausprobiert und es funzt nicht dan ist es leider soh.

    VB.NET-Quellcode

    1. Call read() 'Version.txt auf rechner lesen
    2. Call serreader() 'Version.txt auf server lesen
    3. If v_server <= v_user Then
    4. tim_update.Stop()
    5. Else
    6. Application.Restart()
    7. End If
    8. ' tim_update.Stop()


    Das Programm wird geschlossen und startet nicht mehr
    Wenn ich Dir sage, dass ein einfacher Aufruf von Restart() genügt, um die Anwendung neu zu starten, dann ist das auch so. Evtl. rufst Du irgendwo vor Restart() => Exit() auf. Poste mal mehr Code, dann sieht man den Fehler bestimmt.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Ich kann den befehl auf einen Button legen es funktioniert dennoch nicht -.-
    ¨

    VB.NET-Quellcode

    1. Private Sub Start_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    2. If ProgressBar3.Visible = True Then
    3. MsgBox("SPS Programme werden Syncronisiert, bitte warten")
    4. e.Cancel = True
    5. Else
    6. NotifyIcon1.Visible = False
    7. If Login.Visible = False Then
    8. ueberfaellige_bestellungen.Close()
    9. Lieferanten_bearbeiten.Close()
    10. Artikel_Lieferantennr.Close()
    11. registrieren.Close()
    12. bestellen.Close()
    13. Try
    14. streamw.WriteLine("Hat sich abgemeldet") ' das ist optional.
    15. streamw.Flush()
    16. Catch ex As Exception
    17. End Try
    18. If recognizer IsNot Nothing Then recognizer.Dispose()
    19. Application.Exit()
    20. End
    21. Else
    22. Login.Show()
    23. Lieferanten_bearbeiten.Close()
    24. Artikel_Lieferantennr.Close()
    25. registrieren.Close()
    26. bestellen.Close()
    27. If recognizer IsNot Nothing Then recognizer.Dispose()
    28. Close()
    29. End If
    30. End If


    kann es sein das dies der fehler ist?
    das ist vom form closing... der wird ja aufgerufen wenn ich "restart" Anwende... das war auch das Problem :) danke


    Edit

    Kann es sein das der Cach bez. das Programm nicht komplett geschlossen wird? :s

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

    Mach Dir mal ein einfaches Projekt ohne Inhalt, nur ein Button:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Application.Restart()
    3. End Sub
    Dann gug mal hier rein:
    Projekt -> Eigenschaften -> Anwendung ==> Anwendungsereignisse zeigen
    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!

    VB.NET-Quellcode

    1. Namespace My
    2. ' Für MyApplication sind folgende Ereignisse verfügbar:
    3. '
    4. ' Startup: Wird beim Starten der Anwendung noch vor dem Erstellen des Startformulars ausgelöst.
    5. ' Shutdown: Wird nach dem Schließen aller Anwendungsformulare ausgelöst. Dieses Ereignis wird nicht ausgelöst, wenn die Anwendung nicht normal beendet wird.
    6. ' UnhandledException: Wird ausgelöst, wenn in der Anwendung eine unbehandelte Ausnahme auftritt.
    7. ' StartupNextInstance: Wird beim Starten einer Einzelinstanzanwendung ausgelöst, wenn diese bereits aktiv ist.
    8. ' NetworkAvailabilityChanged: Wird beim Herstellen oder Trennen der Netzwerkverbindung ausgelöst.
    9. Partial Friend Class MyApplication
    10. Private Sub MyApplication_StartupNextInstance(sender As Object, e As Microsoft.VisualBasic.ApplicationServices.StartupNextInstanceEventArgs) Handles Me.StartupNextInstance
    11. Start.Show()
    12. Start.WindowState = FormWindowState.Normal
    13. End Sub
    14. End Class
    15. End Namespace


    Das steht im momentanen Programm
    Doch was ist

    schnibli schrieb:

    VB.NET-Quellcode

    1. Start
    :?:
    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!
    so heist mein Start Form ^^


    Info:

    Das Ich benutze das Update tool von VB.net ... frag nicht warum aber ich finde das gut...
    Dies ist so eingestellt das er während des Betriebs auf Updates Prüft (Startbeschleunigung)

    Nun ist das Problem das ich wenn ich Application.restart anwende er das Update beim erneuten Start nicht Installiert...
    Das heisst ja eigentlich dass das Programm nicht komplett geschlossen wird. oder verstehe ich das falsch?

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

    schnibli schrieb:

    so heist mein Start Form
    Schmeiß diese beiden Zeilen mal einfach da raus, ersatzlos.
    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!

    schnibli schrieb:

    Ich habe das gefühl
    Setz einen Haltepunkt rein und überzeuge Dich davon, was passiert.
    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!
    In deinen Code rufst du nirgends Application.Restart auf, sondern nur Exit, außerdem cancelst du das FormClosing Event mit e.Cancel = True. Am besten du schaust dir das selber nochmal an, der Fehler liegt 100% bei dir.
    Der Restart Event wird hier aufgerufen:

    VB.NET-Quellcode

    1. Private Sub Start_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    2. If restart = "ja" Then
    3. Application.Restart()
    4. 'Application.Exit()
    5. Else
    6. If ProgressBar3.Visible = True Then
    7. MsgBox("SPS Programme werden Syncronisiert, bitte warten")
    8. e.Cancel = True
    9. Else
    10. NotifyIcon1.Visible = False
    11. If Login.Visible = False Then
    12. ueberfaellige_bestellungen.Close()
    13. Lieferanten_bearbeiten.Close()
    14. Artikel_Lieferantennr.Close()
    15. registrieren.Close()
    16. bestellen.Close()
    17. Try
    18. streamw.WriteLine("Hat sich abgemeldet") ' das ist optional.
    19. streamw.Flush()
    20. Catch ex As Exception
    21. End Try
    22. If recognizer IsNot Nothing Then recognizer.Dispose()
    23. Application.Exit()
    24. End
    25. Else
    26. Login.Show()
    27. Lieferanten_bearbeiten.Close()
    28. Artikel_Lieferantennr.Close()
    29. registrieren.Close()
    30. bestellen.Close()
    31. If recognizer IsNot Nothing Then recognizer.Dispose()
    32. Close()
    33. End If
    34. End If
    35. End If
    36. End Sub

    schnibli schrieb:

    VB.NET-Quellcode

    1. Handles Me.FormClosing
    Er ist doch bereits beim runterfahren des Programmes.
    Wenn Du nun da drin Application.Restart() oder Close() aufrufst, bist Du in einer Endlosschleife!
    Ruf dort, wo restart gesetztr wird, Application.Restart() auf und feddich.
    Close() sollte ühaupt nicht vorkommen.
    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!
    und bei

    VB.NET-Quellcode

    1. Handles Me.FormClosing


    soll gar nichts stehen?


    Info:

    VB.NET-Quellcode

    1. Call read() 'Version.txt auf rechner lesen
    2. Call serreader() 'Version.txt auf server lesen
    3. If v_server <= v_user Then
    4. tim_update.Stop()
    5. Else
    6. restart = "ja"
    7. Application.Restart()
    8. End If
    9. ' tim_update.Stop()


    VB.NET-Quellcode

    1. Private Sub Start_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    2. If restart = "ja" Then
    3. Else
    4. If ProgressBar3.Visible = True Then
    5. MsgBox("SPS Programme werden Syncronisiert, bitte warten")
    6. e.Cancel = True
    7. Else
    8. NotifyIcon1.Visible = False
    9. If Login.Visible = False Then
    10. ueberfaellige_bestellungen.Close()
    11. Lieferanten_bearbeiten.Close()
    12. Artikel_Lieferantennr.Close()
    13. registrieren.Close()
    14. bestellen.Close()
    15. Try
    16. streamw.WriteLine("Hat sich abgemeldet") ' das ist optional.
    17. streamw.Flush()
    18. Catch ex As Exception
    19. End Try
    20. If recognizer IsNot Nothing Then recognizer.Dispose()
    21. Application.Exit()
    22. End
    23. Else
    24. Login.Show()
    25. Lieferanten_bearbeiten.Close()
    26. Artikel_Lieferantennr.Close()
    27. registrieren.Close()
    28. bestellen.Close()
    29. If recognizer IsNot Nothing Then recognizer.Dispose()
    30. Close()
    31. End If
    32. End If
    33. End If
    34. End Sub


    Hat immernoch die gleichen auswirkungen.