0

待機中のメッセージを表示しようとしていますが、これは実際には長いプロセスが別のファイルで実行されている間のフォームです。私が直面している問題は、プロセスが開始されるとフォームが消えることですが、フォームはまだアクティブでプロセスを実行しています

私のコード:

    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 秒かかります。プロセスが完了するまでフォームを画面上に表示し続ける方法はありますか?

4

1 に答える 1

0

UpdateSchema 呼び出しは「長いプロセス」であり、frmWaitUpdate は表示するメッセージを含むフォームであると想定しています。

「Me.Visible = True」を呼び出す代わりに、「objWait.Show(Me)」を呼び出す必要があります。待機フォームがモーダルでないことを確認してください。そうしないと、待機フォームが閉じられるまでコードの実行が停止します。長いプロセスが完了したら、「objWait.Hide()」または objWait.Visible = False のいずれかを呼び出すことができます。

また、objWait.Show が機能する前に、コードが実行されているフォームが表示される必要があると思います。

于 2013-02-28T18:41:11.373 に答える