I am trying to implement a simple routine using semaphores that will allow me to run only 3 instances of the application. I could use 3 mutexes but that is not a nice approach i
Cheers
var
hSem: THandle;
begin
hSem := OpenSemaphore(nil, SEMAPHORE_ALL_ACCESS, True, 'MySemp3');
if hSem = 0 then
hSem := CreateSemaphore(nil, 3, 3,'MySemp3');
if hSem = 0 then
begin
ShowMessage('... show the error');
Halt(1);
Exit;
end;
if WaitForSingleObject(hSem, 0) <> WAIT_OBJECT_0 then
begin
CloseHandle(hSem);
ShowMessage('Application can be runed only 3 times at once');
Halt(1);
Exit;
end;
try
your application.run codes..
finally
ReleaseSemaphore(hSem, 1, nil);
CloseHandle(hSem);
end;