我在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吗?
答案 0 :(得分:3)
不,你不能。我可以看到它发生的唯一方法是,如果你有mysql连接的id,另一个按钮,当你点击它时会杀死那个进程,从这个意义上说,查询将停止,backgrounworker将完成。