等待表单在执行长进程时消失了

时间:2013-02-28 07:54:57

标签: vb.net winforms

我正在尝试显示一条等待消息,当一个长进程在某个不同的文件中运行时,它实际上是一个表单。 我面临的问题是,一旦流程开始,表单就会消失,但它仍处于活动状态并正在运行流程

我的代码:

    Dim objWait As New frmWaitupdate
    Dim strReply As String

    Dim ischange As Boolean
    Dim obj1 As New MyBO.UpdateSchemaBO()
    ischange = obj1.CheckSchemaChanges(Application.ProductVersion.ToString())

    If ischange = True Then

        lblMsg.Text = "Schema changes found please wait  Please wait."

        obj1.AddVersionTable(Application.ProductVersion.ToString())
        Me.Visible = True

        strReply = obj1.UpdateSchema(Me)
        If strReply <> "" Then
            MessageBox.Show(strReply, "abc")
        Else
            MessageBox.Show("Schema updated successfully", "abc")
        End If


        'objWait.Hide()
    ElseIf ischange = False Then

        MessageBox.Show("No schema changes found", "abc")


        End If

    End If

当进程在UpdateSchema()中进行时需要大约30-45秒才能完成表单消失。在我的流程完成之前,有没有办法让表单在屏幕上可见?

1 个答案:

答案 0 :(得分:0)

我认为UpdateSchema调用是您的“漫长过程”,而frmWaitUpdate是包含您希望显示的消息的表单。

不应该调用“Me.Visible = True”,而应该调用“objWait.Show(Me)”。确保等待表单不是模态的,否则代码执行将在那里停止,直到等待表单关闭。当漫长的过程完成后,你可以调用“objWait.Hide()”或objWait.Visible = False“。

另外,我认为在objWait.Show工作之前,运行代码的形式需要显示。