VB运行时容易无响应,显示有问题,很卡。如何解决?
do..loop循环中有较大计算量,里面套的for循环循环次数也多达几千次,有读取文件,计算插值,刷新msflexgird1表格和Richtextbox。程序运行后,表面...
do..loop循环中有较大计算量,里面套的for循环循环次数也多达几千次,有读取文件,计算插值,刷新msflexgird1表格和Richtextbox。程序运行后,表面上很卡,用鼠标点击程序界面,就出现无响应的问题。电脑很好,4核处理器,VB运行时,电脑不卡运行其他程序流畅的,就是VB程序本身卡,但是能顺利计算完毕的。
请问如何让程序比较流畅地运行呢?
我听取一些意见不用循环的sleep语句,直接在do....loop循环和for循环中用一个doevents命令。
我已经加了几个doevents,程序出现无响应的情况少了些。但是text和labe.caption的显示却有了问题,而且msflexgrid,“看上去”有时刷新有时不刷新。程序如下:
Do while ()
for i=1 to 10000
调用插值函数
Next
Form3.RichTextBox1.Text = ""
For i = 1 To 10000
Form3.RichTextBox1.Text = Form3.RichTextBox1.Text & Wei2(i) & Chr(13) + Chr(10)
DoEvents
Next
......
For i = 1 To 10000
.......对数运算
Next
调用 Simulation函数
label4.caption=.....
For i = 1 To 10
Sleep 1
DoEvents
Next
label1(6).caption=.....
label1(0).caption=....
Loop
加了doevents运行后鼠标总是在指针状态和忙状态之间不停闪烁,而且label不能显示了,只能到最后运行完显示。
以前虽然程序假死,但是在几次do while...loop循环运行后,能让label显示让我知道程序计算情况。
我看了些资料,说是外部显示刷新需要时间,vb内部运行又很快,需要靠doevents调节,我是不是用的不恰当。请指点!
几个最需要解决的问题:
(1)如何解决卡死的问题,是因为VB显示刷新需要更多的时间,程序等不了它么?
(2)每轮循环中计算结果的正确性与读取msflexgrid表格里刷新的数据有关系。目前,程序“看上去”有时在刷新有时不在刷新表格,我不知道仅仅是显示的问题么?里面实际的数据是不是已经更新过了,并且正确地为每次循环计算提供了对应的数据?如果只是显示的故障,那还好。这一点我非常担心。
谢谢帮助! 展开
请问如何让程序比较流畅地运行呢?
我听取一些意见不用循环的sleep语句,直接在do....loop循环和for循环中用一个doevents命令。
我已经加了几个doevents,程序出现无响应的情况少了些。但是text和labe.caption的显示却有了问题,而且msflexgrid,“看上去”有时刷新有时不刷新。程序如下:
Do while ()
for i=1 to 10000
调用插值函数
Next
Form3.RichTextBox1.Text = ""
For i = 1 To 10000
Form3.RichTextBox1.Text = Form3.RichTextBox1.Text & Wei2(i) & Chr(13) + Chr(10)
DoEvents
Next
......
For i = 1 To 10000
.......对数运算
Next
调用 Simulation函数
label4.caption=.....
For i = 1 To 10
Sleep 1
DoEvents
Next
label1(6).caption=.....
label1(0).caption=....
Loop
加了doevents运行后鼠标总是在指针状态和忙状态之间不停闪烁,而且label不能显示了,只能到最后运行完显示。
以前虽然程序假死,但是在几次do while...loop循环运行后,能让label显示让我知道程序计算情况。
我看了些资料,说是外部显示刷新需要时间,vb内部运行又很快,需要靠doevents调节,我是不是用的不恰当。请指点!
几个最需要解决的问题:
(1)如何解决卡死的问题,是因为VB显示刷新需要更多的时间,程序等不了它么?
(2)每轮循环中计算结果的正确性与读取msflexgrid表格里刷新的数据有关系。目前,程序“看上去”有时在刷新有时不在刷新表格,我不知道仅仅是显示的问题么?里面实际的数据是不是已经更新过了,并且正确地为每次循环计算提供了对应的数据?如果只是显示的故障,那还好。这一点我非常担心。
谢谢帮助! 展开
展开全部
只是显示的问题。运算的数据不会错的。在循环里面有大量运算是会显得卡的。
用了DoEvents 还是这样的话就没太好的办法了,除非用多线程。
用了DoEvents 还是这样的话就没太好的办法了,除非用多线程。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不是每次循环都用DoEvents,如1000次循环执行一次DoEvents
在显示数据的语句前执行一次DoEvents
在显示数据的语句前执行一次DoEvents
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |