Delphi三层客户端想实现多线程的数据提取,个人研究好长一段时间没有完整实现,向广大Delphi同行求助;
要求:
1:客户端一功能块需要提取多项数据(来源于不同的数据表),其中有些需要在处理完后提交数据回数据库,有些不需要提交数据,可直接释放;求一有效解决方法
=========================
三层实现链路:
服务端:DB--AdoConnection--AdoDataSet--DataSetProvider
客户端:SocketConnection--ClientDataSet
=========================
已测试情况:
A:服务端使用连接池,处理 ADOCONNECTION 的连接问题
B: 客户端在线程内创建 SocketConnection ,可正常提数据,但无法提交数据回数据库
C: 往线程内传参主线程的ClientDataSet(CDS)和SocketConnection(SOC)<主线程中有多个SOC>,在线程内对主线程的SOC执行Create事件后,再通过CDS提取数据,按这种方法可正常提取数据,也可正常提交数据,唯一问题:提交数据时,无返回值\
=========================
求解。奖励可后加
多层结构取返回值的确是一个问题。socket可以取,不过很单一,自行设定消息机制可能是上策。
数据提取可以使用多线程方式进行提取,在线程中动态配置SOC,通过CDS存取返回的值即可,不过 这种方式是无法提交数据的