亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

DELPHI下的多線程程序設計(1)

2019-11-18 18:44:36
字體:
來源:轉載
供稿:網友
DELPHI下的多線程程序設計(1)

    我們知道,win95或winNT都是“多線程”的操作系統,在DELPHI 2.0中,我們可以充分利用這一特性,編寫出“多線程”的應用程序。
  對以往在DOS或16位windows下寫程序的人來說,“多線程”仍然是陌生的,但如同以前我們從DOS下的單任務過渡到windows3.1下的多任務,如今我們又必須過渡到“多線程”領域,畢竟計算機時代是在不斷發展的。不過,幸運的是,在DELPHI2.0下進行多線程程序設計并不需要我們去學習龐大的WIN32API函數,我們可以利用DELPHI下標準的多線程類TThread來完成我們的工作。
  TThread是一個abstract(抽象)類,也就是說,并不需要根據TThread來聲明變量(而且根據TThread聲明的變量也是完全無用),我們要做的是把TThread作為基類,用繼承的形式來生成子類。實際上,根據TThread來寫多線程應用程序是非常容易的。
  下面就是一個基本的繼承TThread生成的多線程類。
  QuerThrd.Pas
  unitQuerThrd;
  interface
  uses
  Classes,DBTables;
  type
  TQueryThreadΚclass(TThread)
  PRivate
  fQuery:tQuery;
  protected
  procedureExecute;override;
  public
  constructorCreate(Suspended:Boolean;Query:TQuery);
  end;
  implementation
  constructor
  TQueryThread.Create(Suspended:Boolean;Query:TQuery);
  begin
  inheritedCreate(Suspended);
  fQuery:ΚQuery;
  FreeOnTerminate:ΚTrue;
  end;
  procedureTQueryThread.Execute;
  begin
  fQuery.Open;
  end;
  end.
  在上面這個簡單的例子中,我們構造了一個TThread的子類TQueryThread,用于在后臺執行數據庫查詢。在該類的Create函數中,傳遞了兩個參數Suspended和Query,其中Suspended用于控制線程的運行,如果Suspend為真,TQueryThread類的線程在建立后將立即被懸掛,一直到運行了Resume方法,該線程才會繼續執行,Query參數用于接受一個已經存在的Query控件(在窗體中真正的Query控件)而使它在多線程的情況下運行。Execute是最重要的過程,它是類TQueryThread的執行部分,所有需要在這個多線程類中運行的語句都必須寫在這個過程里。
  實際上構造自己的多線程類時,并不需要輸入所有的這些代碼,選擇DELPHI的File菜單下的new選項,再選“TThreadObject”項目,DELPHI就會為你構造基本的程序模塊。然后我們可以根據需要再做相應的修改。
  進程的執行:
  假設我們已經建立了一個窗體FORM1,窗體中有我們將要使用的查詢控件Query1。那么我們在該單元的USES部分加入上面寫的QuerThrd單元。
  procedureTForm1.Button1Click(Sender:TObject);
  begin
 ?。⒁粋€運行的進程}
  TQueryThread.Create(False,Query1);
  end;
  如果這個過程被執行,那么窗體中的查詢控件Query1就會自動在多線程的環境下運行查詢。注意TQueryThread類中只有Create而沒有Free,動態建立類以后又忘記刪除是我們常犯的錯誤之一,不過在這里由于我們指定了FreeOnTerminate(運行完即刪除)為真,所以當Execute里的語句執行完后,TQueryThread類占據的內存控件將被自動釋放。
  然而還有一個問題值得我們注意,由于同一時刻可以有多個線程同時運行,那么我們還必須解決好同步的問題,如果幾個多線程程序之間沒有任何關聯,那么它們之間也不會有任何沖突。但實際上,可能同時運行幾個多線程的數據庫應用程序,由于需要共享相同的數據庫資源,我們還需要為Query1增加一個Tsession控件。
  其實,雖然我們也許沒有親自使用過Session控件,但實際上,在所有的數據庫訪問時DELPHI都會自動建立一個臨時的Session控件,使用完后又動態地刪除掉它。在平常的數據庫編程時,用不著我們親自來操作,但在數據庫多線程執行的情況下,為了不相互沖突,我們必須為每個數據庫訪問都定制自己的Session控件。這個步驟非常簡單,我們只需要在窗體中增加一個Session控件,然后給它的屬性“Sessionname”寫一個任意的名字,并再在Query1的“Sessionname”中寫一個相同的名字。這樣我們的數據庫程序就安全了。
  另一類需要解決同步問題的是那些對VCL資源進行操作的程序,這類的程序非常多,好在解決的方法也非常簡單。
  我們可以看下面這樣一個程序:
  unitBncThrd;
  interface
  uses
  WinProcs,Classes,Graphics,ExtCtrls;
  type
  TBounceThreadΚclass(TThread)
  private
  FShape:TShape;
  FXSpeed:Integer;
  FYSpeed:Integer;
  procedureMoveShape;
  protected
  procedureExecute;override;
  public
  constructorCreate(Suspended:Boolean;Shape:TShape;XSpeed,YSpeed:Integer);
  propertyShape:TShapereadFShape;
  end;
  implementation
  procedureTBouad.MoveShape;
  var
  MaxHeight,MaxWidth:Integer;
  begin
  withFShapedo
  begin
  Left:ΚLeft+FXSpeed;
  Top:ΚTop+FYSpeed;
  if(LeftΙ0)or
  (Left+WidthΛParent.Width)then
  FXSpeed:ΚFXSpeed*-1;
  if(TopΙ0)or
 ?。═op+HeightΛParent.Height)then
  FYSpeed:ΚFYSpeed*-1;



上一篇:DELPHI下的多線程程序設計(2)

下一篇:設計模式、用Delphi實現---->Strategy模式

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
狠狠躁夜夜躁人人躁婷婷91| 高清欧美性猛交xxxx| 欧美日韩国产中文精品字幕自在自线| 亚洲人成在线观| 日韩在线观看免费全| 国产精品jvid在线观看蜜臀| 国产精品久久久久aaaa九色| 日韩va亚洲va欧洲va国产| 麻豆精品精华液| 狠狠操狠狠色综合网| 国产精品免费一区| 久久好看免费视频| 欧美激情欧美激情| 亚洲欧美三级伦理| 欧美一区二区三区精品电影| 成人免费xxxxx在线观看| 日韩av电影院| 国产成人综合精品在线| 亚洲在线免费看| 欧美成人剧情片在线观看| 国产成人97精品免费看片| 欧美日韩国产限制| 亚洲网在线观看| 精品偷拍一区二区三区在线看| 78m国产成人精品视频| 日韩av理论片| 亚洲天天在线日亚洲洲精| 一区二区亚洲欧洲国产日韩| 精品av在线播放| 91精品国产亚洲| 中文字幕亚洲欧美日韩2019| 亚洲男人天堂2019| 久久久久久香蕉网| 久久久久久美女| 欧美激情网站在线观看| 亚洲91精品在线观看| 亚洲a∨日韩av高清在线观看| 精品美女国产在线| 国产精品a久久久久久| 日韩av影视在线| 精品色蜜蜜精品视频在线观看| 日韩欧美中文字幕在线观看| 日韩中文字幕网站| 91久久国产综合久久91精品网站| 欧美精品一区二区三区国产精品| 一本色道久久综合狠狠躁篇怎么玩| 全色精品综合影院| 国产在线98福利播放视频| 亚洲国语精品自产拍在线观看| 九色精品美女在线| 日韩专区在线观看| 久久91亚洲人成电影网站| 5566日本婷婷色中文字幕97| 欧美性猛交xxxx久久久| 日本乱人伦a精品| 91中文字幕在线| 伦伦影院午夜日韩欧美限制| 亚洲天堂av综合网| 色小说视频一区| 亚洲午夜激情免费视频| 国产一区二区在线免费| 欧美高清视频在线| 亚洲国产福利在线| 欧美午夜丰满在线18影院| 黄网站色欧美视频| 最近免费中文字幕视频2019| 久色乳综合思思在线视频| 亚洲国产日韩欧美在线图片| 欧美日韩加勒比精品一区| 亚洲色图五月天| 久久精品视频播放| 神马久久久久久| 亚洲国产精品国自产拍av秋霞| 国产91九色视频| 亚洲第一精品久久忘忧草社区| 亚洲精品97久久| 亚洲女同性videos| 26uuu久久噜噜噜噜| 性色av一区二区咪爱| 成人精品一区二区三区电影免费| 国产精品羞羞答答| 在线视频日本亚洲性| 一区二区三区视频免费在线观看| 日韩精品日韩在线观看| 久久国内精品一国内精品| 欧美国产日韩一区二区| 91国产美女在线观看| 欧美亚洲另类视频| 国产精品久久久久久av福利软件| 欧美精品第一页在线播放| 久久久久久久久久av| 日本三级久久久| 美女999久久久精品视频| 亚洲欧美中文另类| 九九视频这里只有精品| 日本精品视频在线播放| 九色精品免费永久在线| 欧美做受高潮电影o| 91精品综合视频| 国产精品香蕉国产| 国产亚洲精品综合一区91| 久久精品国产亚洲一区二区| 亚洲天堂av在线免费观看| 奇门遁甲1982国语版免费观看高清| 亚洲精品午夜精品| 2021国产精品视频| 成人性生交大片免费看视频直播| 国产mv免费观看入口亚洲| 亚洲日本中文字幕免费在线不卡| 69久久夜色精品国产69| 久久久久久91| 成人h猎奇视频网站| 亚洲性线免费观看视频成熟| 欧美精品久久久久久久免费观看| 综合136福利视频在线| 一区二区三区天堂av| 午夜免费久久久久| 成人h视频在线| 久久久91精品国产| 韩国v欧美v日本v亚洲| 中文字幕国内精品| 狠狠躁夜夜躁人人爽天天天天97| 久久久综合av| 亚洲精品98久久久久久中文字幕| 久久精品国产一区二区三区| 日韩精品小视频| 亚洲老头老太hd| 欧美第一页在线| 激情懂色av一区av二区av| 亚洲偷熟乱区亚洲香蕉av| 亚洲欧美成人一区二区在线电影| 亚洲变态欧美另类捆绑| 国产丝袜一区视频在线观看| 日韩国产精品亚洲а∨天堂免| 久久国产精品久久久久久| 日韩欧美中文字幕在线播放| 亚洲免费av网址| 九九热在线精品视频| 成人h视频在线观看播放| 国产成人jvid在线播放| 91精品国产高清自在线看超| 亚洲精品国产精品久久清纯直播| 日本韩国在线不卡| 91欧美日韩一区| 午夜精品美女自拍福到在线| 91国产美女在线观看| 久久久伊人日本| 国产成人精品久久久| 成人黄色在线免费| 亚洲国产精品人人爽夜夜爽| 久久99久久99精品中文字幕| 日韩在线中文视频| 欧美一区二区.| 亚洲国产天堂网精品网站| 欧美日韩亚洲一区二区| www.欧美三级电影.com| 久久免费高清视频| 亚洲国产精品字幕| 综合欧美国产视频二区| 黑人狂躁日本妞一区二区三区| 精品国产福利视频| 精品视频www| 色先锋久久影院av| 欧美激情在线狂野欧美精品|