有一个任务:从 DataTable 中的 DB 表中加载数据。由于数据量很大,而且服务器很周到,我将使用异步方法,但由于某种原因,没有任何效果。有这个代码:
public void LoadData()
{
LoadDataAsync();
}
protected async Task LoadDataAsync()
{
// какой-то подготавливающий код - неинтересные, скучные подробности
await _dataAdapter.Fill(_dataTable);
// другой код, установка переменных и прочие действия
}
在 LoadData() 调用之后,LoadDataAsync() 方法的第二部分根本不执行,而是将执行转移到调用 LoadData() 的函数。所以桌子是空的。像这样尝试:
public async void LoadData()
{
await LoadDataAsync();
}
我创建了任务并通过 Run with await 和 await Task.WhenAll(t) 在这两种方法中调用它们,一个是使用 async 前缀完成的,另一个不是,我尝试了它们的不同组合。到目前为止,达到了以下预期:
public void LoadData()
{
Task _res = Task.Run(LoadDataAsync);
Task.WaitAll(_res);
}
LoadDataAsync() 的代码如上所示。
因此,问题是:如何正确加载数据,从而没有阻塞并组织等待数据加载到内存中的过程?
谢谢