OSDN Git Service

多段ポップアップ対応をブランチ(bRESPOPUP)からマージ
[gikonavigoeson/gikonavi.git] / ThreadControl.pas
index c6ae3d4..b3e8e75 100644 (file)
@@ -18,7 +18,7 @@ type
                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);
@@ -56,10 +56,13 @@ destructor TThreadControl.Destroy;
 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;
+    FItemList.Clear;
        FItemList.Free;
        inherited;
 end;
@@ -103,6 +106,7 @@ begin
                        end;
                        FAbort := False;
                end;
+        Application.ProcessMessages;
        end;
        for i := 0 to FThreadList.Count - 1 do begin
                TDownloadThread(FThreadList[i]).Terminate;
@@ -163,10 +167,10 @@ begin
        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);