【发布时间】:2014-12-30 05:31:12
【问题描述】:
再次对不起我的英语, 我已经迁移了客户端和服务器,一切正常, 直到我注意到服务器的远程数据模块没有按预期工作。当我从需要更多时间的客户端运行查询时,其他远程数据模块仍处于暂停状态(包括主线程)。它的行为就像线程模型是 tmSingle。我环顾四周,尝试了我发现的一切,但没有成功。更奇怪的是,在我注册新服务器(使用 XE6 构建)的地方,旧服务器(使用 D7 构建)开始出现相同的症状。
在已经运行我使用的旧服务器的机器上安装新服务器时
xxxxx.exe /unregserver(旧的)和
xxxxx.exe /regserver(对于新的),然后是明显的问题。即使我取消注册新服务器并注册旧服务器,问题仍然存在。
客户端和服务器通过DataSnap Socket(客户端使用TSocketConnection和TConnectionBroker)进行通信。
这是服务器的一些信息
服务器_TLB
unit Server_TLB;
uses Windows, ActiveX, Classes, Graphics, Midas, StdVCL, Variants;
const
LIBID_Server: TGUID = '{xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx}';
IID_IrdmServer: TGUID = '{xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx}';
CLASS_rdmServer: TGUID = '{xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx}';
IrdmServer = interface;
IrdmServerDisp = dispinterface;
rdmServer = IrdmServer;
IrdmServer = interface(IAppServer)
['{xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx}']
........... methods..........
IrdmServerDisp = dispinterface
['{xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx}']
........... methods..........
CordmServer = class
class function Create: IrdmServer;
class function CreateRemote(const MachineName: string): IrdmServer;
implementation
uses ComObj;
class function CordmServer.Create: IrdmServer;
begin
Result := CreateComObject(CLASS_rdmServer) as IrdmServer;
end;
class function CordmServer.CreateRemote(const MachineName: string): IrdmServer;
begin
Result := CreateRemoteComObject(MachineName, CLASS_rdmServer) as IrdmServer;
end;
end.
..RDM 的初始化
initialization
TComponentFactory.Create(ComServer, TrdmServer,
Class_rdmServer, ciMultiInstance, tmFree);
..创造的顺序
Forms.Application.ShowMainForm := False;
Forms.Application.Initialize;
Forms.Application.CreateForm(TdmServer, dmServer);
Forms.Application.CreateForm(TfMain, fMain);
windows.PostMessage(fMain.Handle, MSG_INITIALIZE, 0, 0);
Forms.Application.Run;
使用标准的 SocketDispatcher 和标准的 SConnect
也尝试过设置键
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx}\InprocServer32]
"ThreadingModel"="Free" or "Both"
我想念别的东西?
感谢您的帮助!
【问题讨论】:
标签: delphi delphi-7 delphi-xe6 datasnap