中断DataAdapter?

时间:2011-04-28 14:37:16

标签: .net sql vb.net multithreading

我有一种情况,我正在弹出一个包含“Please Wait”消息的对话窗口,运行SQL查询,然后用包含收集结果的DataGridView替换“Please Wait”消息。

我正在使用的代码基本上是:

    Dim X As New Data.SqlClient.SqlCommand
    X.CommandText = "SELECT some_data FROM someTable"
    Dim XAdapter As New System.Data.SqlClient.SqlDataAdapter(X)
    Dim XSet As New DataSet
    XAdapter.Fill(XSet, "MyTable")

    Me.someDataGridView.DataSource = XSet.Tables("MyTable").DefaultView

我想将这些数据的检索放到后台线程中,以便在我加载更大的数据集时UI不会冻结,但是,在完成此操作后,我还想允许用户取消和关闭对话框,如果访问数据的时间比他们想要等待的时间长。

目前,此对话框窗口可以使用一些任意SQL字符串并显示结果(使用SQLDataAdapter),而无需任何额外代码。

如何使这个过程可以中断,同时还保留了SQLDataAdapter的易用性?

1 个答案:

答案 0 :(得分:1)

  

我该如何制作这个过程   可中断,同时也保留   易于访问   SqlDataAdapter的?

根据文档,您应该可以在基础Close实例上调用SqlConnection。文档说这将终止并回滚任何挂起的事务。此外,您可以使用SqlDataAdapter而不是使用Fill(不幸的是没有异步SqlCommand.BeginExecuteReader方法),一旦完成,您可以通过调用填充DataTable接受DataTable.Load的{​​{1}}超载。如果要中断挂起的命令,只需调用IDataReader