Soweit wir noch nicht bei Science Fiction sind sollte dein Programm auch nur das tun was im Quelltext steht. Schau doch einfach an welchen Stellen im Code die Methode aufgerufen wird und nicht "
theoretisch könnte das sein"
Critical Sections sind einfach: Du erzeugst dir einmalig so ein Objekt, und immer um einen Abschnitt zu sperren sagst du einmal
Acquire()
und wenn du fertig bist
Release()
http://docwiki.embarcadero.com/RADSt...che_Abschnitte
Delphi-Quellcode:
uses
System.SyncObjs;
var
criticalSection: TSynchroObj;
procedure funWithClipboard();
begin
criticalSection.Acquire();
try
ClipBoard.Open();
try
// (...)
finally
ClipBoard.Close();
end;
finally
criticalSection.Release();
end;
end;
PS: Software die das Haus verlässt braucht unbedingt vernünftiges
Exception-Logging sodass du direkt den kompletten Aufruf-Stack bekommst. Wenn die einzige Info nur ein kurzer Text auf einer Messagebox ist wird man echt nicht glücklich.