NoneFrm.pas
上传用户:psxgmh
上传日期:2013-04-08
资源大小:15112k
文件大小:2k
源码类别:

Delphi/CppBuilder

开发平台:

Delphi

  1. unit NoneFrm;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs, StdCtrls;
  6. type
  7.   //定义一个线程类
  8.   TsyncThread = class(TThread)
  9.   protected
  10.     procedure execute; override;
  11.   end;
  12.   TfrmNone = class(TForm)
  13.     ListBox2: TListBox;
  14.     ListBox1: TListBox;
  15.     btnExecute: TButton;
  16.     Label1: TLabel;
  17.     Label2: TLabel;
  18.     procedure btnExecuteClick(Sender: TObject);
  19.   private
  20.     //线程实例
  21.     Thread1, Thread2: TSyncThread;
  22.     //自定义过程,在线程结束时调用
  23.     procedure Thread1Done(sender: TObject);
  24.     procedure Thread2Done(sender: TObject);
  25.     { Private declarations }
  26.   public
  27.     { Public declarations }
  28.   end;
  29. const
  30.   MaxSize = 100;
  31. var
  32.   frmNone: TfrmNone;
  33.   //数据全局区
  34.   GlobalData: array[1..MaxSize] of integer;
  35.   IncNum: Integer = 0;
  36. implementation
  37. {$R *.dfm}
  38. //线程执行主体
  39. procedure TSyncThread.execute;
  40. var
  41.   i: integer;
  42. begin
  43.   FreeOnTerminate := True;
  44.   for i := 1 to Maxsize do
  45.   begin
  46.     Inc(IncNum);
  47.     GlobalData[i] := IncNum;
  48.     sleep(5);
  49.   end;
  50. end;
  51. //创建线程实例
  52. procedure TfrmNone.btnExecuteClick(Sender: TObject);
  53. begin
  54.   Thread1 := TSyncThread.Create(false);
  55.   Thread1.OnTerminate := Thread1Done;
  56.   Thread2 := TSyncThread.Create(false);
  57.   Thread2.OnTerminate := Thread2Done;
  58. end;
  59. //当线程1执行完后,将GlobalData数据显示出来
  60. procedure TfrmNone.Thread1Done(sender: TObject);
  61. var
  62.   i: integer;
  63. begin
  64.   ListBox1.Items.Clear;
  65.   for i := 1 to MaxSize do
  66.     Listbox1.Items.Add(intToStr(GlobalData[i]));
  67. end;
  68. //当线程2执行完后执行 ,将GlobalData数据显示出来
  69. procedure TfrmNone.Thread2Done(sender: TObject);
  70. var
  71.   i: integer;
  72. begin
  73.   ListBox2.Items.Clear;
  74.   for i := 1 to MaxSize do
  75.     Listbox2.Items.Add(intToStr(GlobalData[i]));
  76. end;
  77. end.