Single-instance applicationsProgramYou can only open one program in your operating system.
For example, Outlook
BelowCodeA single instance is controlled through semaphore
(In fact, you can use either eventwaithandle or mutex)
The principle is that Windows does not allow duplicate key objects. In this example"Someuniquestringidentifyingmyapp"
When semaphore is called for the first time, the system creates an object and sets creatednew to true.
When semaphore is called for the second time, the system returns an existing object with the same name and sets creatednew to false.
Using System;
Using System. Threading;
Public Static Class Program
{
Public Static Void Main ()
{
Boolean creatednew;
// Try to create a kernel object with the specified name
Using ( New Semaphore ( 0 , 1 , " Someuniquestringidentifyingmyapp " , Out Creatednew ))
{
If (Creatednew)
{
// This thread created the kernel object so no other instance of this
// Application must be running. Run the rest of the application here...
}
Else
{
// This thread opened an existing kernel object with the same string name;
// Another instance of this application must be running now.
// There is nothing to do in here, let's just return from main to terminate
// This second instance of the application.
}
}
}
}