vb6应用程序在XP上长时间运行时挂起

时间:2013-10-21 08:18:18

标签: multithreading winforms vb6

我有一个执行长操作的VB6应用程序。比方说,保存到数据库需要1分钟以上。

虽然这种保存持续,但我希望我的窗口被锁定(禁用)并显示沙漏光标。

但下一段代码不会这样做:

Private Sub Update_Click()
    Screen.MousePointer = vbHourglass
    Me.MousePointer = vbHourglass
    Me.Enabled = False
    'This takes more than minute:
    Update
    Me.MousePointer = vbDefault
    Screen.MousePointer = vbDefault
    Me.Enabled = True
End Sub

即。表单仍然启用,没有沙漏光标。如果我正在尝试用表单做任何事情,它就会挂起。

如何让应用程序变得用户友好,让用户知道应用程序按下按钮后会做什么?

不幸的是我只能使用VB6,所以我不能使用后台工作程序。

注意:在Win7计算机中,相同的代码会使光标出现沙漏,因此用户会看到该应用正在执行某些操作。在XP系统中,应用程序只是挂起,光标没有任何反应。

2 个答案:

答案 0 :(得分:0)

您应该在更新之前添加DoEvents,以便Windows窗体可以将表单更新为新状态。

DoEvents为windows提供了处理待处理事件的时间。

答案 1 :(得分:0)

尝试在Me.Refresh

之后添加Me.Enabled = False

这会强制表单处理任何未完成的事件