⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 Delphi6分布式开发例程 )
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBClient, corbacon, StdCtrls,Project1_TLB,CorbInit,CorbaObj;
  //定义Waiting线程
  type
  WaitingThread = class(TThread)
  private
  protected
    procedure Execute; override; // Main thread execution
  published
  end;
  //定义Sleeping线程
type
  SleepingThread = class(TThread)
  private
  protected
    procedure Execute; override; // Main thread execution
  published
  end;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    Label2: TLabel;
    edtTotal: TEdit;
    edtWaiting: TEdit;
    edtSleeping: TEdit;
    btnWaiting: TButton;
    Label3: TLabel;
    GroupBox2: TGroupBox;
    Label6: TLabel;
    Label5: TLabel;
    edtWaitingThread: TEdit;
    edtThreadTotal: TEdit;
    Label7: TLabel;
    edtSleepingThread: TEdit;
    btnWaitingThread: TButton;
    procedure btnWaitingClick(Sender: TObject);
    procedure btnWaitingThreadClick(Sender: TObject);
    procedure WaitingThreadTerminated(Sender: TObject);
    procedure SleepingThreadTerminated(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    uWThread:WaitingThread;
    uSThread:SleepingThread;
    //接口的实例
    IWaiting:IWaitingServer;
    ISleeping:ISleepingServer;
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
  StartTime,EndTime,ThreadStartTime,ThreadEndTime,lWaitingStart,lSleepingStart:integer;
  vID:Variant;
implementation

{$R *.dfm}

procedure TForm1.btnWaitingClick(Sender: TObject);
begin
    try
        btnWaiting.Enabled := False;
        StartTime :=GetTickCount;
        vID := IntToStr(GetCurrentThread);
        IWaiting.WaitingProcess(vID,StrToInt(edtWaiting.Text)); //调用服务器的方法
        EndTime := GetTickCount;
        edtWaiting.Text := FloatToStr((EndTime-StartTime)/1000.0);

        StartTime :=GetTickCount;
        Vid := IntToStr(GetCurrentThread);
        ISleeping.SleepingProcess(vID,StrToInt(edtSleeping.Text));  //调用服务器的方法

        EndTime := GetTickCount;
        edtSleeping.Text := FloatToStr((EndTime-StartTime)/1000.0);
        edtTotal.Text := FloatToStr(StrToFloat(edtWaiting.Text)+StrToFloat(edtSleeping.Text));
        //最后输出总的执行的时间
    finally
        btnWaiting.Enabled := True;
    end;

end;

procedure TForm1.btnWaitingThreadClick(Sender: TObject);
begin
    try
        StartTime :=GetTickCount;   //得到当前点数,每毫秒来一个
        btnWaitingThread.Enabled := False;
        lWaitingStart :=GetTickCount;
        //创建线程,创建完线程是没有启动的,
        uWThread := WaitingThread.Create(True);
        uWThread.OnTerminate := WaitingThreadTerminated;   //线程结束时统计时间
        uWThread.Resume;                  //启动线程

        lSleepingStart := GetTickCount;
        //创建线程,创建完线程是没有启动的
        uSThread := SleepingThread.Create(True);
        uSThread.OnTerminate := SleepingThreadTerminated;  //线程结束时统计时间
        uSThread.Resume;                  //启动线程

        EndTime :=GetTickCount;
        edtThreadTotal.Text := FloatToStr((EndTime-StartTime)/1000.0);
    finally
        btnWaitingThread.Enabled := True;
    end;

end;
procedure TForm1.WaitingThreadTerminated(Sender:TObject);
begin
    EndTime := GetTickCount;
    edtWaitingThread.Text := floatToStr((EndTime-lWaitingStart) /1000.0);
end;
procedure TForm1.SleepingThreadTerminated(Sender:TObject);
begin
    EndTime := GetTickCount;
    edtSleepingThread.Text := floatToStr((EndTime-lSleepingStart) /1000.0);
end;
procedure WaitingThread.Execute;
var
    vID:Variant;
begin
    vID := IntToStr(ThreadID);
    Form1.IWaiting.WaitingProcess(vID,StrToInt(Form1.edtWaitingThread.Text));
end;
procedure SleepingThread.Execute;
var
    vID:Variant;
begin
    vID := IntToStr(ThreadID);
    Form1.ISleeping.SleepingProcess(vID,StrToInt(Form1.edtSleepingThread.Text));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
//初始化并创建接口对象
    CorbaInitialize;
    IWaiting := TWaitingServerCorbaFactory.CreateInstance('WaitingServer');
    ISleeping := TSleepingServerCorbaFactory.CreateInstance('SleepingServer');
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -