3

BackGroundWorker 内に非反復コードがあるため、CancellationPendig かどうかを確認できません。

コードは次のとおりです。

Private Sub BgW1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BgW1.DoWork
        Try
            Dim conn As New MySqlConnection(My.Settings.MySQL_Cnn_Cfg)
            Dim Adp As New MySqlDataAdapter
            Dim TablaDatos As New DataTable

            conn.Open()

            Using cmd As New MySqlCommand()
                cmd.CommandType = CommandType.Text
                cmd.Connection = conn

                cmd.CommandText = e.Argument

                Adp.SelectCommand = cmd

                TablaDatos.Clear()
                Adp.Fill(TablaDatos)

                e.Result = TablaDatos
            End Using
        Catch ex As Exception
            e.Result = "Error!"
            e.Cancel = True
        End Try
End Sub

BackGroundWorker はクエリ文字列を受け取り、DataTable を返します。リモート サーバーが迅速に応答する場合は機能しますが、時間がかかる複雑なクエリではプロセスをキャンセルできないか、少なくとも方法がわかりません。

私はすでに試しています

BgW1.Dispose()

成功しなかったので、BackGroundWorker を停止する別の方法はありますか?

4

1 に答える 1