Einzelnen Beitrag anzeigen

Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.337 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Mutex zwischen 2 Prozessen

  Alt 2. Nov 2018, 12:13
Das habe ich schon dadurch abefangen, dass FMutex nur gesetzt wird, wenn es keinen Fehler beim erzeugen gab.
Nein.
LMutex := CreateMutex(nil, True, pCHAR('test')); Erzeugt immer ein neues Handle.
Du kannst dsas mit dem Debugger auch leicht prüfen.
Oder, wenn du den Source so änderst, wirst du sehen, dass es das Handle gibt:
Delphi-Quellcode:
  LMutex := CreateMutex(nil, True, pCHAR('test'));

  if (LMutex = 0) or (GetLastError <> 0) then
  begin
    MessageDlg(SysErrorMessage(GetLastError), mtInformation, [mbOk], 0);
    // Durch diesen Code, wird das fehlerhafte Handle wieder freigegeben:
    if LMutex <> 0 then
    begin
      ReleaseMutex(LMutex);
      CloseHandle(LMutex);
    end;
  end
  else
    FMutex := LMutex;
Peter
  Mit Zitat antworten Zitat