多线程问题(100分)

  • 主题发起人 主题发起人 ccchxy
  • 开始时间 开始时间
C

ccchxy

Unregistered / Unconfirmed
GUEST, unregistred user!
我有这样的代码:
procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
test0 : TDATAPUT;
test1 : TDATAPUT;
begin
test0 := TDATAPUT.Create(0);
test1 := TDATAPUT.Create(1);
end;
TDATAPUT是多线程的类,在这里我只定义了两个线程,我想动态的定义线程应该怎样定义??例如我在TEDIT中定义了五个,我应该怎样做,上面的VAR后面的变量应该怎样定义,请写出原代码!!!给高分!!!!
 
使用数组,但最好是队列。
 
使用TList类
把每次创建的线程对象放到该类的对象中
在程序退出时释放
 
to chnplzh,
用队列比数组的优越性如何体现?能否用简要的几行代码说明一下队列的实现方法?
 
各位大侠,能不能更详细一些呀,最好写出原代码!!!
 
能不能更详细一些呀?最好写出原代码!!!
 
我写的代码片断:
var
do
wnThrds : array[1..10] of TDownThread;
i ,test : integer;
................
begin
................
for i:=1 to 10do
begin
............
do
wnThrds := TDownThread.create(StartPos, FileLength, SectionSize, BlockSize, HostName, HostFile, SaveFile);
............
end;

.............
end;
其中TDownThread是我自己定义的下载线程类。DownThrds就是一个线程数组,可根据你自己的情况决定数组范围。
 
给你一个DEMO:
unit Unit1;
interface
uses
Windows Messages SysUtils Classes Graphics Controls Forms Dia
logs
StdCtrls ComCtrls;
type
TForm1 = class(TForm)
StatusBar1: TStatusBar;
Button1: TButton;
procedure StatusBar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel;
const Rect: TRect);
procedure Button1Click(Sender: TObject);
private
progressbar: TProgressBar;
barRect: TRect;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel;
const Rect: TRect);
begin
barRect := Rect;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
I StepCount : integer;
begin
progressBar := TProgressBar.Create (Form1);
StepCount := 1000;
with progressbardo
begin
top := barrect.top;
left := barrect.left;
width := barrect.right - barrect.left;
height := barrect.bottom - barrect.top;
visible := true;
try
parent := statusbar1;
min := 0;
max := stepcount;
step := 1;
for i := 1 to stepcountdo
stepit;
finally
free;
end;
end;
end;
end.
--
 
后退
顶部