ここで尋ねるように、私はマルチスレッドアプリケーションを持っています。スレッドを終了し、次のメソッドが呼び出されたときに新しいスレッドを開始したい。
procedure TFRABData.RefreshDataset;
var
GridUpdater: TGridUpdater;
begin
if Assigned(updaterThread) and (updaterThread <> nil) then
begin
updaterThread.Terminate;
end;
GridUpdater := TGridUpdater.Create(True);
GridUpdater.OwnerForm := Self;
updaterThread := GridUpdater;
GridUpdater.FreeOnTerminate := False;
GridUpdater.Start;
CodeSite.Send('RefreshDataset executed');
end
しかし、にFreeOnTerminate
設定するTrue
とアクセス違反が発生しますが、にFreeOnTerminate
設定するFalse
とメモリリークが発生します。スレッドを解放するには?