我正在使用.Net Core 3.1,并且想在后台插入批量数据,因此不需要“ http请求”来等待它,“就像失火了一样”
所以我尝试了以下代码
public object myFunction(){
Task.Factor.StartNew(() => {
_context.BulkInsertAsync(logs);
});
return data;
}
但是什么也没发生,在我的数据返回我的_context和日志将为空之后,数据库中没有保存任何数据,因此该过程是否已归档?或有其他方法可以插入我的数据而不必等待
注意:如果我将插入语句替换为发送邮件或其他任何东西,则后台任务将起作用
解决:
谢谢@Peter,我用
Task.Run(async () => await _context.BulkInsertAsync(logs));
Task.Factory.StartNew
或TaskFactory.StartNew
不能接受异步委托(Func<Task>
),因此您应该改用Func <Task>Task.Run
的确有重载。您必须使用await await
或Unwrap
反对StartNew
才能获得与相同的行为Run
。请阅读Stephen Toub的优秀博客文章。
public object myFunction(){
Task.Run(async () => await _context.BulkInsertAsync(logs));
return data;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句