目标是:
然而,它正在发生非常冻结。 " MyClass的"没有内存泄漏,高超时等...
所以我的问题是:我试图实施的代码出了什么问题,哪种解决方案最好?
PS:崩溃只发生在多线程中。如果相同的代码 没有多线程使用,一切都很好。
var T: ITask;
begin
FMyDataModule.DataSet.First;
T := TTask.Create(procedure
begin
while not FMyDataModule.DataSet.Eof do begin
//Do the job
try
MyClass := TMyClass.Create;
MyClass.SearchAndSaveToDatabase; //IdHttpRequest
finally
MyClass.Free;
end;
//Update UI, go next dataset record
TThread.Synchronize(nil,
procedure()
begin
//Go next record and update on UI
FMyDataModule.DataSet.RefreshRecord;
FMyDataModule.DataSet.Next;
end);
end; //end while
end);
//Start the task
T.Start;