MIDAS中的"灾难性故障"(100分)

  • 主题发起人 主题发起人 RGKJ
  • 开始时间 开始时间
R

RGKJ

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾,我第一次做三层,用MIDAS,在type library中定义了一些可远程调用的函数.
客户段采用socketconnection连接.可是我在常识同时用多台客户端(不同PC上)连接时,
可以正常运行,但当我关闭一个客户端后,重新运行客户端就出现了"灾难性故障"提示,
接着,所有的客户端都不能工作,表明是服务器出了问题,我不知道为什么.
我又在同一台PC上运行多个客户端都没问题(只要不关闭一个客户端),但如果关闭一个客户端马上上就死掉了.
我的客户端如下:

procedure TForm1.Button4Click(Sender: TObject);
begin
//连接服务器
try
socketConnection1.Connected :=false;
SocketConnection1.Host :=Edit1.Text ;
SocketConnection1.ServerName :='QueueServer.QueueDataServer';
SocketConnection1.Connected :=true;
except
on exceptiondo
showmessage('不能连接服务器');
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
BillID:OleVariant;
begin
SocketConnection1.AppServer.AddClient(Edit1.Text,BillID);
Edit2.Text :=BillID;
end;

服务器端如下:
procedure TQueueDataServer.AddClient(const WGName: WideString;
var sBillID: OleVariant);
var
ClientAdd:TClientAdd;//自定义操作的类
begin
ClientAdd:=TClientAdd.create(pServePP);
try
sBillID:=ClientAdd.funClientAdd(WGName);
finally
ClientAdd.Free;
end;
end;

我的关键代码就这么多,
是不是还有什么很重要的地方我没有写?
可能是没有对断开连接进行处理,如果是,该怎么写?
请指教
 
各位大虾:
十万火急,怎么没人帮我?
 
不会呀,我们用三层时,客户端和服务端连接正常,添加和删除客户端不会用问题,也没什么特别的处理,你的服务端函数是自己添加的还是用系统提供的方法添加的,最好是用系统提供的方法添加
 
to peacedove
我是在Type Library里添加的.
 
在客户端Form.OnClose中SocketConnection1.Connected :=False;试试
 
灾难性故障 一般是COM发出的异常。
 
to yue_shan
已经添加了.
to 北京男人
能说明点为什么吗?以及怎么样解决?
 
把scktsrvr.exe的thread cache size设置大一点。
 
我遇到过一次,大概是因为对象的非正常释放,或者是释放已经被释放的对象。
 
一般是因为调用一个空对象指针造成的。
 
接受答案了.
 
后退
顶部