多线程例子,答对立即给分!灌水无分! ( 积分: 100 )

  • 主题发起人 主题发起人 饭前饭后
  • 开始时间 开始时间

饭前饭后

Unregistered / Unconfirmed
GUEST, unregistred user!
帮忙写一个多线程同步执行例子,两个进度条同时执行,每秒加1,直到100为止。
答对立即给分!灌水无分!
 
帮忙写一个多线程同步执行例子,两个进度条同时执行,每秒加1,直到100为止。
答对立即给分!灌水无分!
 
不是兄弟的考试题把?呵呵,感觉好想啊!
 
两个timer
 
94,用两个timer最简单了。
如果不想用控件,可以做消息时钟,其实还是一样的。
 
哈哈,两个进度条,这个和同步没有多少关系吧?两个进度条各自加各自的,能有关系扯出同步来吗?
 
进度条就不加线程
也同时执行吧
 
写在一个函数里面,只是不过语句先后的问题,但是你根本感觉不到的,比如下面的语句
while i<100do
begin
inc(progressbar1.position);
inc(progressbar2.position);
end;
 
type
progressbar = class(TThread)
private
{ Private declarations }
probar: TProgressBar;
posi : integer;
procedure showprogress;
protected
procedure Execute;
override;
public
constructor create(Suspended: Boolean;
ProgressBar: TProgressBar);
end;


constructor progressbar.create(Suspended: Boolean;
ProgressBar: TProgressBar);
begin
inherited create(Suspended);
probar:=progressBar;
end;

procedure progressbar.showprogress;
begin
probar.Position := posi;
end;

procedure progressbar.Execute;
var i : integer;
begin
for i:=1 to 100do
// 1000000 is too slow...
begin
Sleep(1000);
// 延时一秒
posi := i;
Synchronize(showprogress);
Sleep(1);
end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var p1,p2 : progressbar;
begin
p1 := progressbar.create(true, progressbar1);
p2 := progressbar.create(true, progressbar2);
p1.Resume ;
p2.Resume ;
end;


end.
 
这个问题不需要线程
线程也不是越多越好
每开一个线程都要占用资源的
而且两个进度条根本不存在冲突问题
 
饭前饭后, 是要写一个多线程同步执行例子
 
用两个timer,每个timer控制一个进度条,每秒钟加1,到一百时销毁timer。
把其中的一个进度条在另外一个线程中实现。
 
后退
顶部