FOnWorkEnd: TGikoWorkEndEvent;
FOnDownloadEnd: TDownloadEndEvent;
FOnDownloadMsg: TDownloadMsgEvent;
- procedure WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer; Number: Integer);
+ procedure WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer; Number: Integer; const AWorkTitle: string);
procedure WorkEnd(Sender: TObject; AWorkMode: TWorkMode; Number: Integer);
procedure Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer; Number: Integer);
procedure DownloadEnd(Sender: TObject; Item: TDownloadItem);
var
i: Integer;
begin
- for i := 0 to FThreadList.Count - 1 do begin
- TDownloadThread(FThreadList[i]).Free;
+ FThreadList.Pack;
+ for i := FThreadList.Count - 1 downto 0 do begin
+ TDownloadThread(FThreadList[i]).Free;
end;
FThreadList.Capacity := FThreadList.Count;
FThreadList.Free;
end;
FAbort := False;
end;
+ Application.ProcessMessages;
end;
+ // \8ec\82Á\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\91S\82Ä\8fI\97¹\82³\82¹\82é\81B
for i := 0 to FThreadList.Count - 1 do begin
+ TDownloadThread(FThreadList[i]).Abort;
TDownloadThread(FThreadList[i]).Terminate;
- if TDownloadThread(FThreadList[i]).Suspended then
+ if TDownloadThread(FThreadList[i]).Suspended then begin
TDownloadThread(FThreadList[i]).Resume;
+ TDownloadThread(FThreadList[i]).WaitFor;
+ end;
end;
end;
FMaxThreadCount := Count;
end;
-procedure TThreadControl.WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer; Number: Integer);
+procedure TThreadControl.WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer; Number: Integer; const AWorkTitle: string);
begin
if Assigned(OnWorkBegin) then
- OnWorkBegin(Sender, AWorkMode, AWorkCountMax, Number);
+ OnWorkBegin(Sender, AWorkMode, AWorkCountMax, Number, AWorkTitle);
end;
procedure TThreadControl.WorkEnd(Sender: TObject; AWorkMode: TWorkMode; Number: Integer);