我想将实体并行保存到数据库和xml日志文件中。
我的存储库中的 AddAsync
方法看起来像这样(并且它工作正常):
protected async Task<int> AddAsync(T entity)
{
using (var context = new myDbContext())
{
context.Set<T>().Add(entity);
return await context.SaveChangesAsync();
}
}
将日志保存到xml文件的方法如下所示:
await _xmlDbHelper.Log(entity);
要并行运行它们我试图这样做:
List<Task<int>> taskArray = new List<Task<int>> {
Task.Run(async () => await AddAsync(person)),
Task.Run(async () => await _xmlDbHelper.Log(person))
};
await Task.WhenAll(taskArray);
或
List<Task<int>> taskArray = new List<Task<int>> {
AddAsync(person),
_xmlDbHelper.Log(person)
};
await Task.WhenAll(taskArray);
但是AddAsync
并没有运行。它永远保持在WaitingForActivation
状态。将AddAsync
单独放入数组中并且从不调用_xmlDbHelper.Log
具有相同的效果。