关于VisiBroker For Delphi的使用2(3)
2008-04-09 04:19:54来源:互联网 阅读 ()
var
I: Integer;
begin
FCSect.Enter;
try
for I := 0 to Length(FModules) - 1 do
if FModules[I].Module = DataModule then
FModules[I].InUse := False;
ReleaseSemaphore(FSemaphore, 1, nil);
finally
FCSect.Leave;
end;
end;
function TModulePooler.GetModule: TDataModule;
var
I: Integer;
begin
Result := nil;
if WaitForSingleObject(FSemaphore, 5000) = WAIT_TIMEOUT then
raise Exception.Create('Server too busy');
FCSect.Enter;
try
if Length(FModules) = 0 then
begin
SetLength(FModules, PoolSize);
for I := 0 to PoolSize - 1 do
begin
FModules[I].InUse := False;
FModules[I].Module := FModuleClass.Create(Application);
end;
end;
for I := 0 to Length(FModules) - 1 do
if not FModules[I].InUse then
begin
FModules[I].InUse := True;
Result := FModules[I].Module;
Break;
end;
finally
FCSect.Leave;
end;
//检查曾经是否连接
if not Assigned(Result) then
raise Exception.Create('Pool is out of capacity');
end;
initialization
ModulePooler := TModulePooler.Create;
finalization
ModulePooler.Free;
end.
//本单元是一个通用的方法单元,当然您也可以采用其他的方法来完成这样的一个功能
//DataModule单元
unit dmEmployee;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables, Provider;
type
TdmEmploy = class(TDataModule)
Session1: TSession;
EmployeeDatabase: TDatabase;
qryEmployee: TQuery;
proEmployee: TDataSetProvider;
private
{ Private declarations }
public
{ Public declarations }
end;
var
dmEmploy: TdmEmploy;
implementation
{$R *.DFM}
end.
//服务器的主单元
unit ServerMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, DBGrids, Db, DBTables, StdCtrls, Corba, Employee_I, Employee_C,
Employee_S, Employee_Impl;
type
TForm1 = class(TForm)
Label1: TLabel;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure CorbaInit;
public
{ Public declarations }
hitcount : integer;
end;
var
Form1: TForm1;
myDBServer : Employee;
implementation
{$R *.DFM}
procedure TForm1.CorbaInit;
begin
CorbaInitialize;
myDBServer := TEmployeeSkeleton.Create('myServer', TEmployee.Create);
Boa.ObjIsReady( myDBServer as _Object );
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
CorbaInit;
end;
end.
//客户端程序
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids, Corba, Employee_i, Employee_c, Db, DBClient, ExtCtrls,
DBCtrls, DBGrids;
type
TForm1 = class(TForm)
Button1: TButton;
DBGrid1: TDBGrid;
cdsEmployee: TClientDataSet;
DataSource1: TDataSource;
edtEmployeeName: TEdit;
Memo1: TMemo;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
myEmployee : Employee;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
myEmployee := TEmployeeHelper.bind;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
cdsEmployee.Data := myEmployee.getEmployeesByName(edtEmployeeName.Text);
cdsEmployee.Open;
end;
end.
我想大家应该可以看得懂上面的程序,如果看不懂也不要紧,下一次我将围绕这个实例展开一系列的问题描述并会同时于COM /MIDAS进行比较说明,为了让大家留下一个思维的空间我在这里就不多说了。还是那一句话下次再见!
作者:赵普昉
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:关于VisiBroker For Delphi的使用1
下一篇:论函数调用约定
- 《关于VisiBroker For Delphi的使用》(2) 2008-04-09
- 《关于VisiBroker For Delphi的使用》 2008-04-09
- 《关于VisiBroker For Delphi的使用》(3) 2008-04-09
- 关于VisiBroker For Delphi的使用1 2008-04-09
- 关于VisiBroker For Delphi的使用(1) 2008-02-23
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
