Midas的服务器端采用,ciMultiInstance, tmApartment模式.
客户端采用TSocketConnection连接,采用多线程的方式.当两个客户端在长时间运行后,会出现如下错误:
"连接占线导致另一个命令"我试着用临界区来保护
在DSPTemp1: TDataSetProvider控件的DataRequest事件中写
  EnterCriticalSection(CS) ;
在QryTemp1:TQuery的AfterClose事件中写
  LeaveCriticalSection(CS);
在两个客户端,长时间运行后会出现如下错误:
"Record Changed for another user"
请问如何解决,这一问题.
我又把服务器改为使用ciSingleInstance, tmSingle模式,在这种模式下只可以连接一个客户端.请问如何解决这个问题?使服务器可以连接多个客户端.请高手指点一下,小弟万分感谢!

解决方案 »

  1.   

    禁用TSocketConnection的回调功能,建议不用将TSocketConnection应用于多线程
      

  2.   

    "禁用TSocketConnection的回调功能"  这个我试一下.但我现在必须要用多线程来处理。是在一个多线程中调用了TClientDataSet控件的功能,而这些TClientDataSet的RemoteServer均为同一个TSocketConnection。我再问一下如果在客户端使用多个TSocketConnection是不是好一些呢?
      

  3.   

    我这几天一直在试这个,服务器的RemoteDataModule本身是支持多线程,但TAdoQuery不支持.我想是不是可以动态创建TAdoQuery而.Provider不动态创建呢?我还没试,我试一下看一看效果.