怎么使用 DoEvents

sushy002 2008-09-28 07:21:26

Private Sub a1_Click()

sleep 5000 '这是一段程序,有时执行时间短,有时长。有时候过长难以忍受,但不是循环,用a2.click使其在需要的时间点上停止下来。

if time>4000 then exit a1 '这里是瞎写的,不符合VB规则。实际应该如何写程序,能让a1在规定的时间点上停下来,而不至于等待时间太长(假死)。
end sub




上面已经描述的很清楚了,就是a1 可能执行时间过长,只要能使a1中途停下来就成。

谢谢各位大哥。
...全文
114 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sushy002 2008-09-28
  • 打赏
  • 举报
回复
to 5楼

你给我推荐的代码我昨天已经下载了并分析了。我现在做的工作仅仅是下载网页文本文件,还没到下载软件方面的工作,而且他的代码也太复杂,暂时只准备用迅雷作为替代方案,还没打算用他的代码。


to 6楼

我这里主要不想贴代码,所以用了个sleep,表示执行这段程序需要很长时间,而且有可能假死。随后,我在1楼说明了我是想用 XMLHTTP。

不过现在用 MSXML2.ServerXMLHTTP 的超时参数将问题解决了。

假如说,问题不解决的话,我想应该是必须用超线程的。


to 7 楼

对于我这样问这种简单问题的人来说,贴个函数基本没用。

我其实是想解决当某sub正在运行的时候,如何让他中止下来,(循环可用doevents,但这里恰恰没有循环)。

多线程似乎是唯一可以选择的,用另外一个线程kill这个线程吧。


总之,这个问题算是解决了。

以后还会有很多问题,前天晚上刚学vb,今天刚刚写完,调试没有问题了,不过bug肯定有,还有一些功能模块似乎没有添加上。

而且只做了一个窗体,显得单调了些

谢谢各位,稍后结贴。
现在还是人类 2008-09-28
  • 打赏
  • 举报
回复
用API函数,
timeSetEvent
timeKillEvent
这样CPU占用率没那么高
zzyong00 2008-09-28
  • 打赏
  • 举报
回复
sleep假死只是暂时,除非你“睡死"
如果你想在sleep过程中执行其它的,肯定的用多线程了,或者,改其它思路,不用sleep了
嗷嗷叫的老马 2008-09-28
  • 打赏
  • 举报
回复
你是要下载东西,用异步吧.

反正都使用了组件,那就再多用点东西.

给你个多线程下载的例子:

http://www.m5home.com/blog/article.asp?id=65
sushy002 2008-09-28
  • 打赏
  • 举报
回复
TO 2 楼

你的答案似乎没有解决我的问题。

按照你的程序,也是先执行 sleep 5000,再执行 flag=true

如果sleep造成假死,那么永远都不会执行 flag=true 这一条,那这个程序也就永远不能停止下来。
靳永富 2008-09-28
  • 打赏
  • 举报
回复
好象得用多线程度
zzyong00 2008-09-28
  • 打赏
  • 举报
回复
定义一全局级变量
dim flag as boolean

Private Sub a1_Click()

sleep 5000

if time>4000 then flag=true
end sub

在a1过程或函数中
if flag then exit sub/function
sushy002 2008-09-28
  • 打赏
  • 举报
回复
http://zhidao.baidu.com/question/52415914.html

对,我就是做的 XMLHTTP 下载内容,他说

1 如果是像调用XMLHTTP控件或SOCKET套接字,可以把阻塞改成非阻塞。

请问该怎么操作?

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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