请问我已经受冬添加了一个线程的文件并在线程当中实现了下载功能。请问怎么能够动态的添加线程。比如我用一个按钮模拟其他捕获到的事件。,点一次添加一个线程,在10个线程之内都能同时下载不同的文件,超过10个就等待
在总线程数小于10的时候自动从等待队列转入下载队列。该如何实现谁能个一个小小例子看看各位不论高手还是新手都来讨论一下,特此邀请斑竹来一起讨论,我的问题从来没有遇见过斑竹参与不知道是为什么。是不是没有斑竹如果我描述的不清楚请各位指出来

解决方案 »

  1.   

    procedure TMyDownLoad.Download;
    Var
      UnitName,PathName:String;
      MyStream:TMemoryStream;
      filepath:string;
      IDHTTP: TIDHttp;begin
    //form1.IDHTTP:= TIDHTTP.Create(nil);
    //form1.StatusBar1.Panels[0].Text:='正在下载文件...';
    IDHTTP:= TIDHTTP.Create(nil);
    MyStream:=TMemoryStream.Create;try
        form1.idhttp1.Connect();
      except
      end;  if form1.idhttp1.Connected then
      begin
      try
      form1.IdHTTP1.Get('http://dl_dir.qq.com/qqfile/qq2006beta1.exe',MyStream);
      filepath:=ExtractFilePath(ParamStr(0));  MyStream.SaveToFile(filepath+'\DownLoadFiles\11.exe');
      MyStream.Free;
      showmessage('下载完成!');
      except
        showmessage('网络出错未能下载完成!');
        MyStream.Free;
        Exit;
      end;end;
    end;constructor TMyDownLoad.Create();
    beginFreeOnTerminate := True; // 自动删除
    InitializeCriticalSection(CS); //初始化临界区
    inherited Create(False); // 直接运行
    end;
    procedure TMyDownLoad.Execute;
    begin
      { Place thread code here }
      EnterCriticalSection(cs);       //进入临界区
      if Terminated then exit;
      Synchronize(Download);
      LeaveCriticalSection(CS);     //退出临界区
    end;这里是我线程工作的主要代码,请问该如何动态添加。可以用一个按钮模拟
      

  2.   

    jcl有个thread管理器...........
      

  3.   

    var hThread: THandle;
      dwThreadID: dWord;
    begin
      hThread := CreateThread(nil, 0, @MyThreadFunc, nil, 0, dwThreadID);
      if hThread = 0 then
        messagebox(handle, '线程创建失败', '报警提示', mb_ok);
      

  4.   

    有没有其他朋友帮帮忙阿
    whbo(王红波(年轻人,要有所作为))你的代码我看不大懂
    有没有多一点的
      

  5.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      MyThread:TMyDownLoad  
    begin
      MyThread:=TMyDownLoad.Create;
      .......
    end;
    CreateThread是個API函數!樓上朋友不知道你是否看了樓主的問題?