ここで尋ねるように、私はマルチスレッドアプリケーションを持っています。スレッドを終了し、次のメソッドが呼び出されたときに新しいスレッドを開始したい。
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とメモリリークが発生します。スレッドを解放するには?