|
看论坛大家的讨论都说不支持多线程;但又有大神用绘编可以搞多线程;绘编不是每人都行的。不知道论坛里有没有大神比较了解delphi的;现在delphi提供的多线程是非常方便的;或许能能以大神们的力量查看delphi的多线程类;看看它是如何实现过来的;而且还非常之强大。
有心研究AU3多线程的大神可以看看delphi的这些
TThread 类:这个就是delphi的多线程类
TThread.CreateAnonymousThread(); //普通
TThread.Queue(); //队列
TThread.Synchronize(); //VCL 同步
//准备让线程调用的测试函数
procedure Draw(aCanvas: TCanvas; X,Y: Integer; aCount: Integer = 100000);
var
i: Integer;
begin
for i := 0 to aCount do
begin
aCanvas.Lock;
aCanvas.TextOut(X, Y, IntToStr(i));
aCanvas.Unlock;
end;
end;
//同步执行
procedure TForm1.Button1Click(Sender: TObject);
begin
TThread.CreateAnonymousThread(procedure begin Draw(Canvas, 50, 10); end).Start;
TThread.CreateAnonymousThread(procedure begin Draw(Canvas, 50, 30); end).Start;
TThread.CreateAnonymousThread(procedure begin Draw(Canvas, 50, 50); end).Start;
TThread.CreateAnonymousThread(procedure begin Draw(Canvas, 50, 70); end).Start;
TThread.CreateAnonymousThread(procedure begin Draw(Canvas, 50, 90); end).Start;
end;
//顺序执行
procedure TForm1.Button2Click(Sender: TObject);
begin
TThread.Queue(nil, procedure begin Draw(Canvas, 150, 10); end);
TThread.Queue(nil, procedure begin Draw(Canvas, 150, 30); end);
TThread.Queue(nil, procedure begin Draw(Canvas, 150, 50); end);
TThread.Queue(nil, procedure begin Draw(Canvas, 150, 70); end);
TThread.Queue(nil, procedure begin Draw(Canvas, 150, 90); end);
end; |
|