Snippet

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 
 

VBNET.CZ | © 2007 Tomáš Herceg, Tomáš Jecha | Kopírování a přejímání jakéhokoliv obsahu z tohoto webu je bez písemného svolení autorů zakázáno.