Einzelnen Beitrag anzeigen

TimWu

Registriert seit: 27. Okt 2016
15 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Mutex zwischen 2 Prozessen

  Alt 2. Nov 2018, 11:27
Hallo Community,

was möchte ich erreichen?:
Die Anwendung soll pro Datenbank-Verbindung nur einmalig geöffnet werden können.

meine Lösungsidee:
Durch das Verwenden von "Mutex" mit Bezeichner (Anwendungsname + Verbindungsinfo) wird überprüft, ob das Programm mit dieser DB-Verbindung bereits läuft.

mein Problem:
Das Mutex verhalten zwischen Prozessen ist sehr merkwürdig.

Ich starte meine Testanwendung (siehe code unten bzw. Anhang) 2 mal.
locken in 1. Anwendung
locken in 2. Anwendung schlägt fehl
unlocken in 1. Anwendung
locken in 1. Anwendung schlägt fehl

Habt ihr eine Idee?

Delphi-Quellcode:
//prozedur zum locken
procedure TForm1.btn1Click(Sender: TObject);
var
 LMutex: THandle;
begin
  LMutex := CreateMutex(nil, True, pCHAR('test'));

  if (LMutex = 0) or (GetLastError <> 0) then
  begin
    MessageDlg(SysErrorMessage(GetLastError), mtInformation, [mbOk], 0);
  end
  else
    FMutex := LMutex;
end;

//prozedur zum unlocken
procedure TForm1.btn2Click(Sender: TObject);
begin
  ReleaseMutex(FMutex);
  CloseHandle(FMutex);
end;
Angehängte Dateien
Dateityp: zip Projekte.zip (3,54 MB, 4x aufgerufen)
  Mit Zitat antworten Zitat