有一窗体在初始化数据时,需要一段较长的时间,由于初始化数据部分不管放到窗体的
Create事件中,还是放到Show事件中。运行起来总觉得程序太慢了(注:我也知道是初始化函数部分必须从服务器中查询、取数据导致程序运行慢)。这对用户来说不是一个好消息。
这个窗体中有一个StringGrid控件,初始化后的数据就放在这控件里。如果初始化函数部分放到窗体Create事件或Show事件中,由于数据的安全性差和函数的不稳定性在程序运行中有可能导致整个程序不稳定性。我的想法是等窗体显示完毕后,再自动初始化数据。就算初始化函数需要时间,用户对程序速度变化上感觉不大。初始化数据也可慢得一条条地把数据导入到StringGrid控件中,这也可以让用户接受。如果让用户看到从调用到看到窗体出现花很长的时间的话,这用户肯定不会接受。简单来说,初始化函数我不想放到窗体Create事件或Show事件中,而是想等窗体完全显示出来后,再自动调用初始化函数.
Create事件中,还是放到Show事件中。运行起来总觉得程序太慢了(注:我也知道是初始化函数部分必须从服务器中查询、取数据导致程序运行慢)。这对用户来说不是一个好消息。
这个窗体中有一个StringGrid控件,初始化后的数据就放在这控件里。如果初始化函数部分放到窗体Create事件或Show事件中,由于数据的安全性差和函数的不稳定性在程序运行中有可能导致整个程序不稳定性。我的想法是等窗体显示完毕后,再自动初始化数据。就算初始化函数需要时间,用户对程序速度变化上感觉不大。初始化数据也可慢得一条条地把数据导入到StringGrid控件中,这也可以让用户接受。如果让用户看到从调用到看到窗体出现花很长的时间的话,这用户肯定不会接受。简单来说,初始化函数我不想放到窗体Create事件或Show事件中,而是想等窗体完全显示出来后,再自动调用初始化函数.
或启用一个线程来进行初始化工作。
2、对于ClientDataSet可以控制返回数据包的大小,根据需要向服务器端申请数据。方法三,在数据集元件读取的时候,比如在OnScroll或者OnFilterRecord的时候,调用Application.ProcessMessage,这样用户界面就可以得到及时地响应,看上去不是死掉了一样。这样需要防止在数据集元件还在读取得时候,用户就开始操作。以上方法,比较好的就是控制数据包大小的方式,不过这种方式写程序很啰嗦。但是也可以简单的就是设置一下数据包的大小就不管了,数据元件回自己处理的,极端情况设置为1,这样就是一条一条的读取,对服务器的压力比较大。但是,在Com+作为服务器端的时候,需要自己在客户端和服务器端书写代码,因为Com+不能保证客户和服务Com的对应和持续链接,你需要告诉服务器当前需要的究竟是那条记录,服务器端也必须自己处理,这都在OnGetRecord事件中处理,把信息封装在OwnerData中。