【发布时间】:2020-06-08 20:13:34
【问题描述】:
我有一个对返回正确数据的数据库的查询
public async Task<IEnumerable<FacturaDeVentaSP>> ConsultaBD(int page, int row)
{
try
{
using (var connection = new MySqlConnection(connectionString))
{
return await connection.QueryAsync<FacturaDeVentaSP>("facturadeventaSP",
parameter, commandType: System.Data.CommandType.StoredProcedure);
}
}
catch (Exception ex)
{
throw ex;
}
}
我想要的是创建 x 个执行线程,并在每个线程内向数据库发出 x 个请求。
Task[] tasks = new Task[countThreads];
for (int i = 0; i < tasks.Length; i++)
{
tasks[i] = Task.Factory.StartNew(()=>new Random().NextDouble());};
}
如何在每个线程上执行ConsultaDB() 方法x 次
【问题讨论】:
-
如果您正在查询数据库,那么这就是 IO,您不需要单独的线程。只需使用
async和await即可获取您可以等待的任务。这样您就可以在等待其他人的 IO 完成时发出新的查询。 -
This EF 相关,但我认为通常与 dapper/ormless 处理大致相同。因此,您需要考虑是否实际上更繁琐的代码会在您的特定用例中为您带来收益。
标签: c# task taskfactory