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

📄 fclientdemomain.pas

📁 就是这本书的随书代码。包括《实战Delphi 5.x-分布式多层应用系统篇》
💻 PAS
字号:
unit fClientDemoMain;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, Db, DBClient, CorbaCon, uFreeMeThread, uHoldMeThread;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    edtFreezeMe: TEdit;
    edtHoldMe: TEdit;
    Label3: TLabel;
    edtTotal: TEdit;
    Panel1: TPanel;
    Label4: TLabel;
    edtFreezeMeThread: TEdit;
    Label5: TLabel;
    edtHoldMeThread: TEdit;
    edtThreadTotal: TEdit;
    Label6: TLabel;
    btnFreezeMe: TButton;
    btnThreadFreezeMe: TButton;
    Label7: TLabel;
    cnFreezeMeServer: TCorbaConnection;
    cnHoldMeServer: TCorbaConnection;
    procedure btnFreezeMeClick(Sender: TObject);
    procedure btnThreadFreezeMeClick(Sender: TObject);
  private
    { Private declarations }
    lStart, lEnd : Integer;
    lFreezeMeStart, lHoldMeStart : Integer;
    ufThread : FreezeMeThread;
    uhThread : HoldMeThread;
  public
    { Public declarations }
    procedure FreezeThreadTerminated(Sender: TObject);
    procedure HoleMeThreadTerminated(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.btnFreezeMeClick(Sender: TObject);
var
  vID : WideString;
begin
  try
    btnFreezeMe.Enabled := False;
    lStart := GetTickCount;
    vID := WideString(IntToStr(GetCurrentThread));
    cnFreezeMeServer.AppServer.FreezeMeFor(vID, StrToInt(edtFreezeMe.Text));
    lEnd := GetTickCount;
    edtFreezeMe.Text := FloatToStr((lEnd - lStart) / 1000.0);

    lStart := GetTickCount;
    vID := WideString(IntToStr(GetCurrentThread));
    cnHoldMeServer.AppServer.HoldMeFor(vID, StrToInt(edtHoldMe.Text));
    lEnd := GetTickCount;
    edtHoldMe.Text := FloatToStr((lEnd - lStart) / 1000.0);
    edtTotal.Text := FloatToStr(StrToFloat(edtFreezeMe.Text) + StrToFloat(edtHoldMe.Text));
  finally
    btnFreezeMe.Enabled := True;
  end;
end;

procedure TForm1.btnThreadFreezeMeClick(Sender: TObject);
var
  vID : Variant;
begin
  try
    lStart:= GetTickCount;
    btnThreadFreezeMe.Enabled := False;
    lFreezeMeStart := GetTickCount;
    ufThread := FreezeMeThread.Create(True);
    ufThread.OnTerminate := FreezeThreadTerminated;
    ufThread.Resume;

    lHoldMeStart := GetTickCount;
    uhThread := HoldMeThread.Create(True);
    uhThread.OnTerminate := HoleMeThreadTerminated;
    uhThread.Resume;
    
    lEnd := GetTickCount;
    edtThreadTotal.Text := FloatToStr((lEnd - lStart) / 1000.0);
  finally
    btnThreadFreezeMe.Enabled := True;
  end;
end;

procedure TForm1.FreezeThreadTerminated(Sender: TObject);
begin
  lEnd := GetTickCount;
  edtFreezeMeThread.Text := FloatToStr((lEnd - lFreezeMeStart) / 1000.0);
end;

procedure TForm1.HoleMeThreadTerminated(Sender: TObject);
begin
  lEnd := GetTickCount;
  edtHoldMeThread.Text := FloatToStr((lEnd - lHoldMeStart) / 1000.0);
end;

end.

⌨️ 快捷键说明

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