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 を停止する別の方法はありますか?