c# - 方法 "Partial"返回

标签 c# asynchronous

我正在开发一种在非常大的表中搜索信息的方法。因为我不使用 ORDER BY或查询中的任何特殊内容(只是一个简单的 SELECT id,description FROM complain WHERE description like 'YOUR TEXT HERE'" ),我希望通过返回成批结果来提供更动态的用户体验。这类似于在 Management Studio 中运行查询。

一些细节,我的调用堆栈并不大,但并非所有内容都在同一个方法中。有 buttonSearchClick , performCleanSearchsearchComplainBasedOnDetailInfo每个都在不同的层(分别是接口(interface)、SearchBLL 和 SearchDAL)。

我考虑过创建一个异步方法来填充类似 List<Complain> 的东西但这似乎并不干净。我将不得不制作 3 层异步。有没有人对如何实现这个有更好的想法?或者这是最好的方法吗?

Edit1: 我已经设法在连接字符串上使用 SqlCommand.BeginExecuteReader 和异步处理来从查询中获取出现的结果...现在我必须想办法使我的 DAL 方法异步,以便上层也可以异步获取结果...我正在考虑实现某种缓冲区...也许是一个队列...

Edit2: 我不是在寻找分页解决方案或类似 Twitter 的解决方案(您可以在其中滚动并搜索新结果),因为我知道一个事实,即用户必须阅读所有正在获取信息...

最佳答案

您可以使用 BackgroundWorker 并在您的 DoWork 中让您的批处理执行如下操作:

DataTable dt;
int iRecords = 0;
do
{
  dt = new DataTable();
  using(SqlConnection con = new SqlConnection(""))
  {
    SqlCommand cmd = new SqlCommand(string.Format("SELECT TOP 100 * FROM complain where ID > {0}", iRecords));
    SqlDataAdapter sda = new SqlDataAdapter(cmd);
    sda.Fill(dt);
    //Report your progress here
  }
} while(dt.Rows.Count != 0) 

关于c# - 方法 "Partial"返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15387609/

相关文章:

asynchronous - 脚本错误(:0) when trying to run async test in mocha-phantomjs

c# - PostSubmitter 的异步 CTP

c# - Json.Net PopulateObject - 根据 ID 更新列表元素

c# - 用两个字分开

c# - 如何使用 Mono.CSharp.Evaluator 编译委托(delegate)?

javascript - 如何在 NodeJS/Express API 中进行多个异步调用

asynchronous - 克隆字符串以在Rust中进行异步移动关闭

javascript - typescript :从异步函数为变量赋值

c# - StringReader 不是 "exiting"/中断

c# - 将 XElement 添加到特定位置的另一个 XElement