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

4

你不能。

我可以看到这个工作的唯一方法是如果你有ID连接MySQL,并且当你单击它时另一个按钮会终止该进程,从这个意义上说,查询将停止并且后台工作人员将完成。

于 2013-07-22T12:57:46.390 回答