你那样做只能针对一个客户使用,
有没有考虑过多个用户同时GetNextPacket时会是什么结果呢?

解决方案 »

  1.   

    由服务端维护一些光标信息,这就变成有状态物件了
    服务器就不得不为维护这些信息而浪费一定的资源,无法释放
    你那样做如果有第二个用户在用时,打开package,接收到的数据就是从第10条开始至
    20条记录,而再返回第一个程序用GetNextpacket时取的不是第10-20条记录,而变成了
    20-30记录,相信这个结果,不是客户和你都希望看到的而把光标信息放在客户端维护,那么这就是一个无状态物件,服务器就可以在发可一个响应的
    packet后把组件释放掉,直到另一个消息传送过来
    因为传过来的命令中带有光标位置信息,这样子的话不论哪个客户,在使用getNextpackat时
    都能得到它想要的数据不好意思,废话太多了
      

  2.   

    这个问题我这样认为:
    服务端仍是无状态。也没有错误,但是有隐患。如果你有两个CDS都是指向一个DSP,如果两个CDSFecthOnDemand为False,PacketRecords为10。你运行程序,看看。你就会发现,CDS1打开了前10笔数据,而CDS2打开的是后10笔数据。同样,CDS1会从第21笔数据开始存储,不会从11笔开始。也就是说前者改变了数据表的光标位置,后者也受影响。所以李维先生那样做是为了维护每个CDS自己的数据表的光标位置。如果你使用的是一个CDS那么简单的方法就行了。