to njbudong(南京不懂) 不能断开连接,否则性能相差太大了。起码相差10倍以上。因为如果断开连接,我还不如在线程中再建立mts对象,但是如果每个线程都建立mts对象,建立过程起码要花好几秒钟,对于我的应用,不能承受
解决方案 »
- dbgrid 數據顯示
- TdxBarManager這個控件在那裏有下載
- double类型怎么转化成字符串,delphi7有没有现成的函数。
- TIdUDPServer UDP端口的问题
- (50分)急!!!我做图像放大后的图像(bmp)执行时只显示下半部分,可在画图工具及vc中都可全部显示,why?(在线等待)
- 如何做到像windows画图工具那样,切割一块区域,然后该区域可以在花布上移动!
- 求助100分,如何通过UDP协议进行大文件传输
- 请问一下,高中生能学会计吗,未来可以考会计师吗
- Delphi7的连接数据库情况
- outlook express问题?
- 一个非常简单的DbGrid的问题,100分!
- 关于资源文件!!!
不是dcom,而com+(或者说mts)。我的主进程字的是程序所在的进程,这个进程产生了不少线程,这些线程需要调用主进程的com+资源。如果把这些com+的调用全部放到线程中去,在线程中会带来严重的性能问题。
//数据检索:根据提供的sql语句检索数据
//sql:需要检索的sql语句,应该是一个select语句
var
oleSjj:OleVariant;//返回的数据集
dtstSjj:TClientDataset;
IJk1:IUnknown;
IMTS:ISwxtdx;//应用服务器mts接口
begin
CoInitialize(nil);//初始化
IJk1:=CreateRemoteComObject('10.68.7.7',CLASS_Swxtdx);//创建MTS对象
IMTS:=IJk1 as ISwxtdx;
dtstSjj:=TClientDataset.Create(nil);
try
IMTS.Sjjs('select * from yxgl.hcs',oleSjj);//调用服务器的方法取得数据
dtstSjj.Data:=oleSjj;
dtstSjj.CommandText:='select * from yxgl.hcs';
result:=inttostr(dtstsjj.recordcount);
finally
dtstsjj.Free;
end;
CoUninitialize();//结束
end;
对不起,在拷贝示例代码时,有误,应该是下面的代码。TForm1 = Class(TForm);
protected
.....
private
.....
public
imts:ISwxtdx;//应用服务器mts接口
...
end;procedure TForm1.Create(Aonwer:TComponent);
var
IJk1:IUnknown;
begin
//mts是在这里产生的,之所以在这里产生,是考虑到,如果在访问mts时才建立对象的话,
//性能太低了,因为我对mts资源的访问相当频繁。而我的程序要求线程中的代码必须有
//很高的性能,否则我就在mts中直接产生mts对象了
Inherited Create(Aowner);
CoInitialize(nil);//这是按照你的意见修改的,我发现无论有没有这一句,都有错误 IJk1:=CreateRemoteComObject('10.68.7.7',CLASS_Swxtdx);//创建MTS对象
IMTS:=IJk1 as ISwxtdx;
end;procedure TForm1.destroy;
begin
CoUninitialize();//这是按照你的意见修改的,end;function TForm1.sjjs:string;
//数据检索:根据提供的sql语句检索数据
//sql:需要检索的sql语句,应该是一个select语句
var
oleSjj:OleVariant;//返回的数据集
dtstSjj:TClientDataset;
begin
dtstSjj:=TClientDataset.Create(nil);
try
IMTS.Sjjs('select * from yxgl.hcs',oleSjj);//调用服务器的方法取得数据
dtstSjj.Data:=oleSjj;
dtstSjj.CommandText:='select * from yxgl.hcs';
result:=inttostr(dtstsjj.recordcount);
finally
dtstsjj.Free;
end;
end; procedure TForm1.Button1Click(Sender: TObject);
begin
tjmsx.Create(false);
end; procedure tjmsx.Execute;
begin
Synchronize(jmtz);
end; procedure tjmsx.Jmtz;//界面调整过程
var
m:string;
begin
m:=form1.sjjs;
form1.caption:=m;
end;