?? unit1.~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)); //調(diào)用服務(wù)器的方法
EndTime := GetTickCount;
edtWaiting.Text := FloatToStr((EndTime-StartTime)/1000.0);
StartTime :=GetTickCount;
Vid := IntToStr(GetCurrentThread);
ISleeping.SleepingProcess(vID,StrToInt(edtSleeping.Text)); //調(diào)用服務(wù)器的方法
EndTime := GetTickCount;
edtSleeping.Text := FloatToStr((EndTime-StartTime)/1000.0);
edtTotal.Text := FloatToStr(StrToFloat(edtWaiting.Text)+StrToFloat(edtSleeping.Text));
//最后輸出總的執(zhí)行的時間
finally
btnWaiting.Enabled := True;
end;
end;
procedure TForm1.btnWaitingThreadClick(Sender: TObject);
begin
try
StartTime :=GetTickCount; //得到當(dāng)前點數(shù),每毫秒來一個
btnWaitingThread.Enabled := False;
lWaitingStart :=GetTickCount;
//創(chuàng)建線程,創(chuàng)建完線程是沒有啟動的,
uWThread := WaitingThread.Create(True);
uWThread.OnTerminate := WaitingThreadTerminated; //線程結(jié)束時統(tǒng)計時間
uWThread.Resume; //啟動線程
lSleepingStart := GetTickCount;
//創(chuàng)建線程,創(chuàng)建完線程是沒有啟動的
uSThread := SleepingThread.Create(True);
uSThread.OnTerminate := SleepingThreadTerminated; //線程結(jié)束時統(tǒng)計時間
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
//初始化并創(chuàng)建接口對象
CorbaInitialize;
IWaiting := TWaitingServerCorbaFactory.CreateInstance('WaitingServer');
ISleeping := TSleepingServerCorbaFactory.CreateInstance('SleepingServer');
end;
end.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -