上网找让程序暂停的方法,那一堆代码中出现个DoEvents,就这么简单?至今没实现过。现在又想要实现一个功能了,就是程序运行一些程序时很卡,要等它操作完成才能操作,比如我下载个文件,用了函数URLDownloadToFile,程序就死在那了,等它下载完才能动,但是这太让人不高兴了,所以有什么办法解决这个问题吗?还有一些循环,如果我操作一个数据库,有几千条记录,就算我只是修改一个数据,也会卡。上网找又说DoEvetns好用,郁闷了,我用了怎么不行?代码如下
Label1.Caption = "正在下载..."DoEvents'根据别人的做法,这个没有的,但是没达到效果我就加了一个在这里
ret = URLDownloadToFile(0, Text1.Text, "c:/百度.mp3", 0, 0)
DoEventsIf ret = 0 Then Label1.Caption = "下载完成"
End If
Label1.Caption = "正在下载..."DoEvents'根据别人的做法,这个没有的,但是没达到效果我就加了一个在这里
ret = URLDownloadToFile(0, Text1.Text, "c:/百度.mp3", 0, 0)
DoEventsIf ret = 0 Then Label1.Caption = "下载完成"
End If
VB搞多线程不好弄,可以考虑单独再做一个ActiveXexe去干这些事情
需要下载的时候,主程序把地址扔给ActiveXexe,让它去慢慢下载,主程序应该就不会卡了。楼主说的数据库卡一下的问题,当年也碰到过,想了很多办法也没有完全解决。后来想到可以用ActiveXexe试试,可惜还没动手就辞职了,是否有效也就成了悬案,呵呵。
可以参看一下MSDN里面的Coffee示例程序
for ........
'下载一个数据块
....
....
....
doevents
next
yachong 的建议很具有建设性。
较好的办法是用多线程,在独立线程中执行URLDownloadToFile。.net 2.0/3.0中可以通过BackgroundWork来方便的实现,而VB6就比较困难了。
DoEvents是运来腾出时间来处理系统的其他响应,并不等同让程序暂停下来。
这个东西用在循环里很有用!