在使用async / await异步加载一组数据之后,当尝试将这些数据添加到数据表(datatable)时,您可能会发现数据表不会被正确填充。这是因为异步方法中使用了await,导致添加到数据表的新行似乎不能正确处理。解决方法是将所有代码包装在一个async方法中,将等待所有数据加载完成后再一起添加到数据表中。
示例:
private async Task LoadDataIntoTable()
{
var results = await GetDataAsync();
DataTable table = new DataTable();
table.Columns.Add("Name", typeof(string));
table.Columns.Add("Age", typeof(int));
// add all results to the table
foreach (var result in results)
{
DataRow newRow = table.NewRow();
newRow["Name"] = result.Name;
newRow["Age"] = result.Age;
table.Rows.Add(newRow);
}
// now that all rows have been added to the table, do something with it
DoSomethingWithTable(table);
}
public async Task> GetDataAsync()
{
// load data asynchronously
}
private void DoSomethingWithTable(DataTable table)
{
// do something with the table
}