这倒是一个办法.但我测试了,还是有问题.中间层手工关闭后再重新启用,客户端依然会报连接已断开,RPC服务器不可用的错误.
只好这样了,在Application.OnException中进行全局处理,也算能解决问题.
try
...
except
on E: EOleSysError do
begin
if (EOleSysError(E).ErrorCode = -2147417848) or
(EOleSysError(E).ErrorCode = -2147023174) then
begin
DMCom.BrkServer.Connected := false;
DMCom.BrkServer.Connected := true;
ShowMessage('请重新执行刚才的操作!')
end;
end;