📄 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)); //调用服务器的方法
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 + -