关于本人对Autoit的多线程
看论坛大家的讨论都说不支持多线程;但又有大神用绘编可以搞多线程;绘编不是每人都行的。不知道论坛里有没有大神比较了解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; 以上代码实现是同时在界面上打印从 0 到 十万 的循环;如果不是多线程;拖动窗体会卡死的;但使用了多线程后拖动也是正常执行。
//同步执行那里同时一次打印5个;(不是多线程;这个根本不可能;会直接卡死界面)
//顺序执行 就是一个一个;这个不用多说了 不是太重的任务,可以用多进程模拟多线程 如果想做多线程处理,au3毕竟不是它的强项...
页:
[1]