【发布时间】:2016-09-19 08:37:36
【问题描述】:
我有这段代码用于向数据库添加大约 1500 条记录:
async void button7_Click(object sender, EventArgs e)
{
var task = await Task.Run(() =>
{
Random rnd = new Random();
for (int i = 0; i <= 1500; i++)
{
db.Tbls.Add(new Tbl()
{
Name = "User" + i + 1,
Num = rnd.Next(10, i + 10) / 10
});
progress.Report(i * 100 / 1500);
}
db.SaveChanges();
return db.Tbls.Count();
});
}
但完成该过程大约需要 4 秒,但因为我使用了async/await,它不会冻结 UI。现在我的问题是:如何改进此代码以更快地运行。我如何在这里使用并行编程?你能告诉我如何使用 TPL 的例子吗?
编辑:
我按照建议使用了并行循环和AddRange,但它没有效果。在所有建议的方式中,我的过程仍然需要大约 4 秒。如果有人能帮我解决这个问题,我真的很感激。
【问题讨论】:
-
首先,以first answer开头
标签: c# multithreading entity-framework parallel-processing async-await