This code creates a mutex before starting an application and releases the mutex when the application is closed. A user will only be able to start the application once. This can be used for services as well.
[STAThread]
public static void Main()
{
bool createdMutex = true
Mutex mutex = new Mutex(true, "ConfigureApp", out createdMutex)
if (createdMutex && mutex.WaitOne())
{
Application.EnableVisualStyles()
Application.SetCompatibleTextRenderingDefault(false)
Application.Run(new MainForm())
mutex.ReleaseMutex()
}
else
{
MessageBox.Show("Only one application instance is allowed.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
}
mutex.Close()
}