2016-09-26 4 views
0
läuft

In meiner Anwendung habe ich diese Sub für Neustart mein Programm geschrieben. Dieser Code ist in Ordnung.Anwendung neu starten und prüfen, ob bereits

Sub Restart 
    'For restart application many times 
    Application.Current.Shutdown() 
    System.Diagnostics.Process.Start(Application.ResourceAssembly.Location) 
End Sub 

Nach ein paar Tagen habe ich hinzugefügt diesen Code das Programm zu überprüfen, bereits läuft. (und dieser Code ist in Ordnung)

Sub IsRunning 
    'Check if it's already running 
    If (Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName).Length > 1) Then 
     Msg = "Application is running" 
     MessageBox.Show(Msg, "Attention", MessageBoxButton.OK, MessageBoxImage.Error) 
     Application.Current.Shutdown() 
    End If 
End Sub 

Nun, was das Problem ist? Wenn ich versuche, die Anwendung neu zu starten, erhalte ich die Nachricht "Anwendung läuft" und das kann ich nicht!

Wie löst man dieses Problem?

Vielen Dank

Antwort

1

Zu Beginn der Anwendung, ein globales Mutex registrieren. Und wenn die Anwendung heruntergefahren wird, lassen Sie den Mutex los.

Sie können dann überprüfen, ob Ihre Anwendung bereits läuft, indem Sie prüfen, ob Sie den Mutex erhalten können.

Dies könnte von etwas Inspiration sein: Run single instance of an application using Mutex

Und der MSDN Link: https://msdn.microsoft.com/en-us/library/system.threading.mutex(v=vs.110).aspx

Hoffnung, die

+0

Gute Idee hilft. Vielen Dank – Alan392

Verwandte Themen