我有一种情况,我正在弹出一个包含“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的易用性?
答案 0 :(得分:1)
我该如何制作这个过程 可中断,同时也保留 易于访问 SqlDataAdapter的?
根据文档,您应该可以在基础Close
实例上调用SqlConnection
。文档说这将终止并回滚任何挂起的事务。此外,您可以使用SqlDataAdapter
而不是使用Fill
(不幸的是没有异步SqlCommand.BeginExecuteReader
方法),一旦完成,您可以通过调用填充DataTable
接受DataTable.Load
的{{1}}超载。如果要中断挂起的命令,只需调用IDataReader
。