我的学习生涯(Delphi篇) - 05
来源:互联网 发布:淘宝diy动铁耳机 编辑:程序博客网 时间:2024/04/30 02:54
多线程基本是所有程序都应该拥有的“基因”。
下例既是简单的演示。
-------------------------------------------------------------------------------------------------美丽分割线---------------------------
年代:2005
文件:my0712.7z
效果如下图:
主程序单元:
Unit2.pas
unit Unit2;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, ADODB, ScktComp, Sockets;type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Edit1: TEdit; Edit2: TEdit; ADOConnection1: TADOConnection; ServerSocket1: TServerSocket; TcpClient1: TTcpClient; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1; ThreadsRunning:integer;implementationuses unit1;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);var MyThread1,MyThread2:MyThread;begin ThreadsRunning:=2; MyThread1:=MyThread.Create(Edit1,5000); MyThread1.OnTerminate := Button2Click; MyThread2:=MyThread.Create(Edit2,5000); MyThread2.OnTerminate := Button2Click; Button1.Enabled := False;end;procedure TForm1.Button2Click(Sender: TObject);begin dec(ThreadsRunning); if ThreadsRunning=0 then Button1.Enabled := True;end;end.
线程单元:
Unit1.pas
unit Unit1;interfaceuses Classes, StdCtrls,SysUtils;type MyThread = class(TThread) private AEdit:TEdit; MaxLoop:Integer; CurrentLoop: Integer; { Private declarations } protected procedure DisLoop; procedure Execute; override; public constructor Create(Edit:TEdit;Max:Integer);//virtual; end;implementation{ Important: Methods and properties of objects in VCL or CLX can only be used in a method called using Synchronize, for example, Synchronize(UpdateCaption); and UpdateCaption could look like, procedure MyThread.UpdateCaption; begin Form1.Caption := 'Updated in a thread'; end; }{ MyThread }constructor MyThread.Create(Edit:TEdit;Max:Integer);begin inherited Create(False); AEdit:=Edit; MaxLoop:=Max; FreeOnTerminate := True;end;procedure MyThread.DisLoop;begin AEdit.text:=InttoStr(CurrentLoop);end;procedure MyThread.Execute;var I:integer;begin for I:=0 to MaxLoop Do begin CurrentLoop:=I; Synchronize(DisLoop); if Terminated then Exit; end;end;end.
- 我的学习生涯(Delphi篇) - 05
- 我的学习生涯(Delphi篇) - 完结篇
- 我的学习生涯(Delphi篇) - 00
- 我的学习生涯(Delphi篇) - 01
- 我的学习生涯(Delphi篇) - 02
- 我的学习生涯(Delphi篇) - 03
- 我的学习生涯(Delphi篇) - 04
- 我的学习生涯(Delphi篇) - 06
- 我的学习生涯(Delphi篇) - 07
- 我的学习生涯(Delphi篇) - 08
- 我的学习生涯(Delphi篇) - 09
- 我的学习生涯(Delphi篇) - 10
- 我的学习生涯(Delphi篇) - 11
- 我的学习生涯(Delphi篇) - 12
- 我的学习生涯(Delphi篇) - 13
- 我的学习生涯(Delphi篇) - 14
- 我的学习生涯(Delphi篇) - 15
- 我的学习生涯(Delphi篇) - 16
- mysql常用语句备忘
- 黑马程序员_集合4(高级for,可变参数,静态导入,Date,Calendar,Math,System,RunTime)
- MySQL Server 层和 InnoDB 引擎层 体系结构图
- JDK,JRE,JVM区别与联系
- libsvm 使用
- 我的学习生涯(Delphi篇) - 05
- 完数VS盈数
- 15个学习习惯,受益一生(强烈推荐)
- C语言string
- CreateFile
- POJ1036 Gangsters
- wuyun 直接可以看的文章
- Svm应用尝试(C#写的数字ocr软件LTOCR)
- vim编辑器设置Tab键