来自:LiChaoHui, 时间:2003-5-29 8:42:00, ID:1904681
关于楼主的通用中间服务器,
为什么要实现那么多的远程数据模块呢? 而且功能都差不多
一共十个RDM,功能是一样的,这样做的原因是为了在一台机器上运行不同的系统.
因为我的程序是框架程序,它要实现不同的系统.安装在不同目录,取不同的文件,就
可以注册不同的CLSID,互不干扰!
你是高手,帮我看看下面的问题:
很久以前在98/ME/NT/2000下都没问题,现在在XP下有点问题:
中间层服务器如果先启动,则客户连接一切正常;
可如果中间层服务器没有启动,客户连接时能启动它但无法返回,
好象是中间层程序死了,而客户端程序等待。
我跟踪发现:
procedure InitComServer;
begin
if SaveInitProc <> nil then
TProcedure(SaveInitProc);
ComServer.FStartSuspended := (CoInitFlags <> -1) and
Assigned(ComObj.CoInitializeEx) and Assigned(ComObj.CoResumeClassObjects);
ComServer.Initialize;
if ComServer.FStartSuspended then
ComObj.CoResumeClassObjects;
end;
其中ComObj.CoResumeClassObjects;导致死机。
//@CoResumeClassObjects := Windows.GetProcAddress(Ole32, 'CoResumeClassObjects');
这个问题会出在哪?