gpt4 book ai didi

vb6 - 在没有 DoEvents 的情况下取消 VB6.0 中长时间运行的进程?

转载 作者:行者123 更新时间:2023-12-02 03:38:52 25 4
gpt4 key购买 nike

是否可以在不使用 DoEvents 的情况下取消 VB6.0 中长时间运行的进程?

例如:

for i = 1 to someVeryHighNumber
' Do some work here '
...

if cancel then
exit for
end if
next

Sub btnCancel_Click()
cancel = true
End Sub

我认为在“if cancel then...”之前我需要一个“DoEvents”,有更好的方法吗?好久不见了……

最佳答案

不,你说得对,你肯定希望在循环中使用 DoEvents。

如果您将 DoEvents 放入主循环中,并发现这会导致处理速度过慢,请尝试调用 Windows API 函数 GetQueueStatus(这比 DoEvents 快得多)快速确定是否有必要调用 DoEvents。 GetQueueStatus 告诉您是否有任何事件需要处理。

' at the top:
Declare Function GetQueueStatus Lib "user32" (ByVal qsFlags As Long) As Long

' then call this instead of DoEvents:
Sub DoEventsIfNecessary()
If GetQueueStatus(255) <> 0 Then DoEvents
End Sub

关于vb6 - 在没有 DoEvents 的情况下取消 VB6.0 中长时间运行的进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/155517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com