DELPHI下的多執行緒程式設計(2) (轉)

gugu99發表於2007-10-11
DELPHI下的多執行緒程式設計(2) (轉)[@more@]下的多執行緒設計(2)

end;
  end;
  procedureTBounceThread.Execute;
  begin
  WhilenotTenateddo
  begin
  Synchronize(MoveShape);
  end;
  end;
  constructorTBounceThread.Create(Suspended:Boolean;Shape:TShape;XSpeed,YSpeed:Integer);
  begin
  inheritedCreate(Suspended);
  FShape:ΚShape;
  FXSpeed:ΚXSpeed;{X軸走向的速度}
  FYSpeed:ΚYSpeed;{Y軸走向的速度}
  FreeOnTerminate:ΚTrue;
  end;
  end.
  這是一個多執行緒的碰碰球遊戲,你可以有多個不同的球,它們分屬不同的執行緒,各自獨立的在螢幕上碰撞。顯然,由於多個球執行的顯示會同時操作VCL資源,為了,我們在Execute過程中的部分加入了Synchronize(MoveShape)來Move?Shape過程,實際上,在任何需要操作VCL資源的地方,例如窗體、點陣圖,都應加入Synchronize呼叫。
  執行時我們可以新建一個程式,然後在USES部分加入以上的BncThrd單元,再在它的窗體FORM1上加入兩個ShapeShape1和Shape2,Shape1可以是一個矩形而Shape2是一個圓。加入以下的程式碼就可以讓矩形和圓動起來。
  procedureTForm1.Button1Click(Sender:T);
  begin
  TBounceThread.Create(False,Shape1,1,2);
  TBounceThread.Create(False,Shape2,2,3);
  end;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-975749/,如需轉載,請註明出處,否則將追究法律責任。

相關文章