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,