Einzelnen Beitrag anzeigen

mjustin

Registriert seit: 14. Apr 2008
3.005 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Aufruf von TObject.Free verzögern?

  Alt 17. Dez 2009, 20:05
Nun, ein Veto oder eine Exception sind in einem Destruktor nicht ganz einfach zu realisieren.

Aber anders herum könnte die TNotifyList ein Flag enthalten, das ihren Status ("arbeitend" / "ruhend") darstellt, und dann abgefragt werden könnte:

Delphi-Quellcode:
while MyNotifyList.IsWorking do
  Application.ProcessMessages;

MyNotifyList.Free;
Zusätzlich kann man noch eine zeitliche Grenze verwenden, nach deren Überschreitung das Free erzwungen wird selbst wenn noch Verarbeitungen stattfinden:

Delphi-Quellcode:
while (MyNotifyList.IsWorking) and (ElapsedTime < MAX_WAIT_TIME) do
  Application.ProcessMessages;

MyNotifyList.Free;
Viele Grüße,
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat