Eine .NET WinForms Anwendung nur einmal starten / arbeiten mit einem mutex

Wenn man eine Anwendung nur einmal durch den Anwender starten lassen möchte, dann ist das mit der Hilfe von einem erzeugten Mutex sehr einfach zu realisieren.

Nur ein paar Zeilen Quellcode sind dafür in der Main() Methode notwendig. Wie immer ist der Beispiel-Code in .NET C#.

bool createdNew;
///Einen neuen Mutex erzeugen, damit die Anwendung nur einmal gestartet werden kann.
System.Threading.Mutex appMutex = new System.Threading.Mutex(true, Application.ProductName, out createdNew);
///Wenn die Erzeugung erfolgreich war
if (createdNew)
{
///... dann kann die Anwendung ausgeführt werden
LogIn frmLogIn = new LogIn();
Application.Run(frmLogIn);

if (frmLogIn.DialogResult == DialogResult.OK)
Application.Run(new MainForm());

// den Mutex wieder frei geben
appMutex.ReleaseMutex();
}
else
{
///Wenn die Anwendung schon ausgeführt wird -> Hinweis-Dialog
string msg = String.Format("Das Programm \"{0}\" wurde bereits gestartet!", Application.ProductName);
MessageBox.Show(msg, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);
}

Kommentare (1) -

Markus
05.11.2007 08:37:39 #

Genau danach hab' ich gesucht!

Vielen Dank auch!

Kommentar schreiben