Forum: Object-Pascal / Delphi-Language
Delphi
by TiGü,
29. Jul 2019
Nur wenn man an alle Fälle denkt und die ausprogrammiert und das nicht übermüdet zwischen zwei Arbeitsaufgaben hin skizziert!
function TLock.Lock(const AInstance: TInstance; ATimeout: Cardinal = 0): Boolean;
begin
Result := False;
if AInstance <> nil then
begin
if FInstance = nil then
begin
FInstance := AInstance;
Forum: Object-Pascal / Delphi-Language
Delphi
by TiGü,
26. Jul 2019
program LockWithInstance;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils,
System.Timespan,
System.SyncObjs;
Forum: Object-Pascal / Delphi-Language
Delphi
by TiGü,
25. Jul 2019
Wrappe doch einfach einen TMonitor (oder mach dir nen Helper dran) und übergebe dir im Enter/TryEnter den Pointer der aktuellen Instanz. Darauf machst du auch das Enter des TMonitors.
Wenn der nächste Aufrufer wieder die gleiche Instanz ist, dann geht das, aber eine andere darf nicht.
Nur so ins Blaue geschrieben, ungetestet.