Zajištění běhu aplikace pouze v jediné instanci
Přidáno: 24.1.2008
Kategorie: Aplikace
Autor: Ondřej Linhart
Jak zajistit aby vaše aplikace běžela pouze v jediné instanci? Ano, lze to nastavením volby Make single instance application ve vlastnostech projektu a ošetřením příslušné události, ale já vám nabízím řešení, při kterém budete mít tento proces plně pod kontrolou a budete ho moct využít i v instalátoru Inno Setup.
Aplikace se pokusí vytvořit globální Mutex s názvem {9C9F8F77-3787-4310-A865-8873AB9F0589} (unikátní identifikátor), pokud se nepodaří vytvořit nový Mutex (což znamená že nějaký proces již tento Mutex vlastní) aplikace se ukončí. V opačném případě je Mutex aplikací držen až do ručního ukončení aplikace.
Přidáte-li do instalačního skriptu instalátoru Inno Setup řádek AppMutex={9C9F8F77-3787-4310-A865-8873AB9F0589} do oddílu [Setup], instalátor nebude pokračovat v instalaci pokud zjistí že vaše aplikace je spuštěna.
Private appMutex As System.Threading.Mutex
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Form1.Load
Dim createdNew As Boolean
appMutex = New System.Threading.Mutex(False, "{9C9F8F77-3787-4310-A865-8873AB9F0589}", createdNew)
If Not createdNew Then
MessageBox.Show("Aplikace je již spuštěna.", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Application.Exit()
End If
End Sub