【发布时间】:2019-08-21 21:11:01
【问题描述】:
我有数以千计的文档将被检索、稍微调整并显示在数据网格中。整个情况可能需要 10-30 秒,并且需要视觉显示进度(比选取框进度条更实质性的东西)
我们的目标是使用当前通过ToList()(或者应该是ToListAsync())获取的文档数来更新状态字段。假设进度更新率是每 250 毫秒回调一次显示当前文档数(或列表长度?)。我不确定如何指示任务执行有助于进度/状态更新程序的回调,或者如何设置 ToList 进行进度调用。
private async void CollectionDropDownList_SelectedIndexChanged(object sender, EventArgs e)
{
string collectionName = collectionDDL.SelectedItem.ToString();
// progressBar/status begin stuff
await LoadCollection(collectionName);
// progressBar/status finish stuff
… set the datagrid datasource to the datatable
}
private Task LoadCollection(string collectionName)
{
return Task.Run(() =>
{
var builder = Builders<BsonDocument>.Filter;
var filter = builder.Ne("Type", "Header") & builder.Ne("Type", (string)null);
var collectionDocuments =
Database
.GetCollection<BsonDocument>(collectionName)
.Find(filter)
.ToList()
;
…
// reshape documents into a DataTable
}
}
【问题讨论】:
标签: winforms async-await mongodb-query progress-bar