Hier ein kleiner Snippet, das ich immer wieder brauche.
Um sicher zu gehen, dass ein Programm nur einmal gestartet wird braucht soll man folgenden Code einfügen:
bool createdNew; System.Threading.Mutex mutex = new System.Threading.Mutex(true, Application.ProductName, out createdNew); if (createdNew) { // bitte Form1 ersetzen Application.Run(new Form1()); // und auch wieder Freigeben besser ist besser mutex.ReleaseMutex(); } else { MessageBox.Show("Programm wurde bereits gestartet!", "Info", MessageBoxButtons.OK, MessageBoxIcon.Error); }