在 .Net Core 的后台插入批量数据

Insert bulk data in background in .Net Core

我正在使用 .Net Core 3.1,我想在后台插入批量数据,所以我不需要等待它的 http 请求 "like fire and forget"

所以我尝试了下面的代码

public object myFunction(){
    Task.Factor.StartNew(() => {
        _context.BulkInsertAsync(logs);
    });

    return data;
}

但是没有任何反应,数据库中没有保存数据 在我的数据返回后我的 _context 和日志将为空,所以流程被归档? 或者有任何其他方法可以插入我的数据并且不要等待它

注意:如果我用发送邮件或任何其他东西替换插入语句,后台任务工作

已解决:

谢谢@Peter,我使用

解决了它
Task.Run(async () => await _context.BulkInsertAsync(logs));

这就是我实现它的方式。这假设响应并不重要。

public NotImportantResult ProcessBulkData()
{
    myFunctionAsync();
    return new NotImportantResult() 
}  

private static async void myFunctionAsync()
{
    await Task.Factory.StartNew(() => new MyBulkProccessor.BulkInsertAsync(logs));
}

Task.Factory.StartNewTaskFactory.StartNew 不能接受异步委托 (Func<Task>),所以你应该使用 Task.Run 而不是它确实有一个 overload with Func < Task >. You would have to use await await or Unwrap against StartNew to get the same behaviour as with Run. Please read Stephen Toub's excellent blog post.

public object myFunction(){
    Task.Run(async () => await _context.BulkInsertAsync(logs));
    return data;
}