我需要帮助了解
await Task.WhenAll(taskList);
最后我可以得到每个任务的结果。这是我目前所掌握的:
public async Task Execute(string[] clauses)
{
var taskList = new List<Task<in>>();
// Here I want to call ExecuteClause for each string in clauses
// and wait for the result.
}
private async Task<int> ExecuteClause(string clause)
{
var connectionString = ConfigurationManager.ConnectionStrings["default"].ConnectionString;
var connection = new SqlConnection(connectionString);
await connection.OpenAsync();
var r = await new SqlCommand(clause, connection).ExecuteReaderAsync();
while (await r.ReadAsync())
{
...
}
r.Close();
connection.Close();
// Just an example returning an int
return 1;
}
我想答案比你想象的要简单。
您将循环访问
public async Task Execute(string[] clauses)
{
var taskList = clauses.Select(ExecuteClause);
return Task.WhenAll(taskList);
}
您需要修复
private async Task<int> ExecuteClause(string clause)
{
var connectionString = ConfigurationManager
.ConnectionStrings["default"].ConnectionString;
using (var connection = new SqlConnection(connectionString)) {
await connection.OpenAsync();
var r = await new SqlCommand(clause, connection).ExecuteReaderAsync();
while (await r.ReadAsync())
{
...
}
r.Close();
connection.Close();
}
// Just an example returning an int
return 1;
}