【发布时间】:2014-05-16 19:38:19
【问题描述】:
我需要通过慢速网络使用大约 10 万条记录更新我的数据库。
我认为异步运行它们可能是个好主意,而不必在运行下一个之前等待响应。我已经走到这一步了:
private async void button2_Click(object sender, EventArgs e)
{
var customerIDs = File.ReadAllLines(@"c:\temp\customerids.txt").ToList();
foreach (var customerID in customerIDs)
{
var result = await DoSomethingWithTheCustomerAsync(customerID);
}
MessageBox.Show("Done");
}
private static async Task<bool> DoSomethingWithTheCustomerAsync(string strCustomerid)
{
var customerid = int.Parse(strCustomerid);
using (var ctx = new MyEntities())
{
var customer = await ctx.Customers.FirstOrDefaultAsync(c => c.CustomerID == customerid);
customer.CustomerNotes += " updated async";
await ctx.SaveChangesAsync();
return true;
}
}
我真的不想在 foreach 循环中等待结果然后继续。我想在循环运行后等待所有任务。我尝试用任务制作一个列表并执行 Task.WaitAll(tasklist) 但是数据库没有更新。
如果可以做到这一点,这是个好主意吗?
【问题讨论】:
标签: c# .net entity-framework asynchronous async-await