//准备让线程调用的测试函数
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;

 

posted on 2014-01-13 15:00  二进制的猫  阅读(129)  评论(0编辑  收藏  举报