【问题标题】:sleep without freezing gui vb6睡觉不冻结gui vb6
【发布时间】:2011-08-06 23:40:24
【问题描述】:

我需要等待我的应用程序中的一些事件,或者等待一些时间过去后再做一些其他的事情

我在 vb6 中试过这个伪代码

starttime=gettickcount
do
endtime=gettickcount
if endtime-starttime=>waittime then exit do
doevents()
loop

但这似乎冻结了 gui,我需要一种替代方法来等待而不冻结 gui

编辑我忘记了doevents,请注意

【问题讨论】:

    标签: vb6 time-wait


    【解决方案1】:

    在您的 vb6 代码中添加“DoEvents”...它允许应用重新绘制...

    【讨论】:

    • 只是将 DOevents 添加到代码中,而没有真正理解为什么需要它以及它的含义,这会导致以后 + 非常 + 微妙的问题。 Doevents will yield,这意味着您的应用程序中的其他事件可以触发,这意味着您的应用程序中的其他例程,您可能从未打算重新进入,实际上可以重新输入,这可能会导致各种问题。
    【解决方案2】:

    我建议使用计时器。计时器在达到它的滴答计数时触发一个事件。所以你可以告诉某事每 3 秒、3 分钟、1 小时等触发一次。

    计时器将在后台运行,让您的应用在倒计时时继续正常运行。

    【讨论】:

    • +1 - 这是正确的答案。您不应该在事件处理程序中停留的时间超过您必须的时间。如果您稍后需要做某事,请使用Timer 在适当的时间引发事件。永远不要因为你阻塞了 GUI 线程而处于一个紧密的循环中,所以你不会让它重新绘制。
    • @Scott 所以在一个对象事件处理程序中,我必须等待,你说我应该使用计时器?我该怎么做
    • 这里是一个简单的例子:vb6.us/tutorials/understanding-timer-control-vb6
    猜你喜欢
    • 2019-01-28
    • 2022-01-05
    • 2013-01-16
    • 2020-08-06
    • 2015-04-08
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多