4
멀티 스레드 응용 프로그램이 있습니다.스레드의 Terminated 속성이 설정된 이유는 무엇입니까?
procedure TGridUpdater.Execute;
begin
inherited;
CodeSite.Send('Thread executed');
sp := ConnectionFactory.GetConnection.LoadStoredProc('rab_itemData');
sp.CreateParam('Tahun', ftInteger, sppdInput).Value := _form.tahun;
sp.Open;
Synchronize(DoProgress1);
sp.DataSet.First;
I := 0;
CodeSite.Send('Terminated value is ' + BoolToStr(Terminated)); //The terminated property is 'True' here. Why?
while (not Terminated) and (not sp.DataSet.Eof) do
begin
CodeSite.Send('Entering loop');
Synchronize(DoProgress);
I := I + 1;
sp.DataSet.Next;
end;
Synchronize(DoProgress2);
end;
방법 당신은 당신이 그것을 시작 직후 스레드를 해제하는 스레드를
procedure TFRABData.RefreshDataset;
var
GridUpdater: TGridUpdater;
begin
GridUpdater := TGridUpdater.Create(True);
GridUpdater.OwnerForm := Self;
GridUpdater.Start;
CodeSite.Send('RefreshDataset executed');
GridUpdater.Free;
end;
여기에 귀하의 질문이 정확히 무엇입니까? 나는 하나도 보지 못한다. –
제 질문은 코드에 대한 주석입니다. –
진행 상황 업데이트에주의하십시오. 하나의 스레드가 실행되고'RefreshDataset'이 호출되면, 다른 스레드를 시작하고 현재 실행중인 스레드를 종료합니다. 시간이 걸릴 수 있습니다. 그리고 당신은 같은 진행 상황을 업데이트 할 것입니다 ... – TLama