先贴图片
看到了吗?图片中的红色部分就是增加的部分。
说说目的:有一种情况下,Com+组件调用失败,导致socket Server挂起,如果不关闭一下COM+组件服务,则所有的客户端调用则会挂起。
为了处理这种情况,在socket Server中调用COM+组件中的某方法超过某个时间没有返回时,关闭一下COM+组件服务。
当COM+组件服务关闭的时候,之前所有挂起的客户端调用将被Kill掉。客户端调用应该设计为可以重试调用,当客户端重新连接,并调用
COM+组件中的方法时,COM+组件中的服务并为自动启动。
procedure TSocketForm.AddClient(Thread: TServerClientThread);
var
Item: TListItem;
sTime: String;
ttime: TDateTime;
begin
//**********************************************************************
//前次调用超时,则关闭COM+组件,下次客户端连接时会自动开启COM+组件fhb2012.04.19
if (ConnectionList.Items.Count > 0) and (speSecond.Value <> 0) then
begin
sTime := ConnectionList.Items[0].SubItems[2];
ttime := EncodeDateTime(StrToInt(copy(sTime, 1, 4)),
StrToInt(Copy(sTime, 6, 2)),
StrToInt(Copy(sTime, 9, 2)),
StrToInt(Copy(sTime, 12, 2)),
StrTo