如何优先显示一个过程中的部分结果?

ssxu01 2008-11-24 10:09:06

请看以下简单VB代码:

Private Sub Btn_a(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btna.Click
pbx_w.visible= true ’想先播放隐藏的画画(代替进度条)

call cal_xy() '调用计算过程,过程的结果显示在一个文本框中,这过程计算要花3-5秒时间才能显示出来
End Sub

程序目的:
因为计算过程会花较长时间,且不易用进度条显示进度,想用动画代替——即想先显示画画,当结果出来后,将动画隐藏。

问题是:
按下按扭后,图片框(要播放的动画)并不是立即显示,而要等到整个结果出来后才显示——但这已经没有意义了。


请问:谁有解决这类问题的好办法?
谢谢!


因是新手,没分可送,抱歉。如果有了再还,谢谢了!
...全文
34 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
net5i 2008-11-25
  • 打赏
  • 举报
回复
也就是说这样异步的调用你那个计算方法:

Private Sub Btn_a(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btna.Click
pbx_w.visible= true ’想先播放隐藏的画画(代替进度条)
Me.Update()
Me.BeginInvoke(New MethodInvoker(AddressOf Me.cal_xy))
End Sub

这种就是多线程调用
net5i 2008-11-25
  • 打赏
  • 举报
回复
噢,对的,应该是Me.Update()

搂主的动画是什么动画?gif图片桢动画

也就是说这个pbx_w是什么控件?

搂主可以把call cal_xy() 这个过程放到一个单独线程中执行
ssxu01 2008-11-25
  • 打赏
  • 举报
回复
感谢1楼朋友

应该是 ME.UPDATE() ?

动画倒是显示出来了,但可能由于系统忙于计算的原因,画画"不动",只有动画背景,一直等到计算结果出来了才开始"动"!

看来我的思路不成立!

有什么好的办法,将一个计算过程(中间混合有循环,有函数调用),赋值给进度条呢?


请高手们不吝赐教!

net5i 2008-11-24
  • 打赏
  • 举报
回复
楼主这样做就行了:

Private Sub Btn_a(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btna.Click
pbx_w.visible= true ’想先播放隐藏的画画(代替进度条)
this.Update()
call cal_xy() '调用计算过程,过程的结果显示在一个文本框中,这过程计算要花3-5秒时间才能显示出来
End Sub


显示不出来是由于 在Windows中 重绘消息的响应级别是最低的,也就是说它在Windows消息队列中一般会自动排到最后面执行的

16,717

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧