在我一个程序中的个别窗口打开时会有3秒钟的延迟,我在父窗口中的Button的OnClient中和子窗口的OnShow中写了事件,子窗口中用的是Cxgrid表,表的列是根据数据库查询结果动态创建的,创建事件也写在子窗口的OnShow事件中,但当点击Button按钮打开子窗口时会有几秒钟的延时或停顿。用起来感觉很不好。
我看了一下进程,打开窗口时内存增加并不多,但CPU的使用率会从百分之一二一下升到百分之四十左右,待窗口完全显示出来后,CPU使用率又降下来了, 内存泄漏有一点,但我觉得不是问题的关键,
不知各位大哥有何高见?
我看了一下进程,打开窗口时内存增加并不多,但CPU的使用率会从百分之一二一下升到百分之四十左右,待窗口完全显示出来后,CPU使用率又降下来了, 内存泄漏有一点,但我觉得不是问题的关键,
不知各位大哥有何高见?
因为程序最小化再恢复时会再次执行onshow中的代码。至于窗体打开慢,要看代码的……无代码,无真相~~
可以考虑用TTimer,只运行一次。
[更正一下上面的]
用一个timer,等show现来后,再运行timer中的事件。。有些比较耗时的读数据的操作,我一般都这么做。
不然窗体会有些迟钝。
function formcreate: Integer;
begin
wirh TForm1.create(nil) do begin
try
InitWndFace; //这个过程里面写你的那些代码
showmodal;
finally
Result := ModalResult;
Free;
end;
end;
end;至于时间长,可以跟踪一下,看看哪些代码操作占用时间。
也可以部分的屏蔽代码,圈定耗时的语句部分。
DataController.EndUpdate ;吗?
程序最小化再恢复时会再次执行onshow事件???不会吧!!