Hallo Leute,
ich habe eine kleine Mini-Konsolenanwendung und muss bei einigen Aufrufen verhindern, dass es eine zweite Instanz gibt.
Hierzu habe ich folgende Programmroutine erstellt, die auch funktioniert.
Meine Frage ist nun, ist das auch wirklich ein sauberes vorgehen oder gibt es eine bessere Lösung?
Vielen Dank im Voraus.
Gruß Achilleus
ich habe eine kleine Mini-Konsolenanwendung und muss bei einigen Aufrufen verhindern, dass es eine zweite Instanz gibt.
Hierzu habe ich folgende Programmroutine erstellt, die auch funktioniert.
VB.NET-Quellcode
-
- ' Anwendung bereits gestartet?
- Public Function CleanAppPrevInstance(Optional ByVal bShowMsg As Boolean = True, Optional ByVal bAppActivate As Boolean = True) As Boolean
- Dim p() As Process
- Dim appName As String = Process.GetCurrentProcess.ProcessName
- p = Process.GetProcessesByName(appName)
- If p.Count > 1 Then
- ' Process is running
- If bShowMsg Then
- Select Case MessageBox.Show("Das Programm Crypto kann nicht mehrfach gestartet werden." & vbNewLine _
- & "Die vorherige Instanz muss geschlossen werden." & vbNewLine _
- & "" & vbNewLine _
- & "Möchten Sie fortfahren?", "Mehrfachstart von Crypto", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
- Case DialogResult.Yes
- Application.DoEvents()
- Process.GetProcessesByName(appName)(1).Kill()
- Return True
- Case DialogResult.No
- Return False
- End Select
- End If
- End If
- Return True
- End Function
Meine Frage ist nun, ist das auch wirklich ein sauberes vorgehen oder gibt es eine bessere Lösung?

Vielen Dank im Voraus.
Gruß Achilleus