次のコードは、INDY 10 tcpserver.onexecute() からのスレッドセーフな VCL 対話を許可するために使用されます。
/// a function to write information into a TBitmap
TVclNavigationImage= procedure( ll, ur, ll_v , ur_v : TPoint ) of object;
TVCLUpdateNotify = class(TIdNotify)
protected
f_ll, f_ur, f_ll_v , f_ur_v : TPoint;
FProc: TVclNavigationImage;
procedure DoNotify; override;
public
constructor Create(ll, ur, ll_v , ur_v : TPoint; aProc:TVclNavigationImage); reintroduce;
class procedure UpdateNavigationWindow(ll, ur, ll_v , ur_v : TPoint ; aProc: TVclNavigationImage);
end;
class procedure TVCLUpdateNotify.UpdateNavigationWindow(ll, ur, ll_v , ur_v : TPoint ; aProc: TVclNavigationImage);
begin
with Create(ll, ur, ll_v , ur_v, aProc) do
begin
Notify;
end;
end;
Oneexecute 関数には
procedure TForm1.IdTCPServerExecute(AContext: TIdContext);
begin
....
TVCLUpdateNotify.UpdateNavigationWindow(....)
....
end;
MADSHI デバッガによると、serveronexecute() のこのコード行がメモリ リークを引き起こしています。クラス内に無料の関数はありません。そのコードのメモリリークをなくす方法は?