长时间执行动作asp.net核心mvc

时间:2016-10-26 17:58:57

标签: asp.net-core

编写一个需要1分钟或更长时间才能执行但立即将控件返回到视图的操作的最佳方法是什么?

我知道有Hangfire解决方案,但它使用数据库来存储执行,我需要更简单的东西。

我使用的是asp.net核心。

这就是我的行动:

    private void CipherData()
    {
        var posts = _context.Posts.All().ToList();
        foreach (var post in posts)
        {
            post.TextCrypt = EncryptionHelper.Encrypt(post.Text);
            _context.Posts.Update(post);
        }
        _context.SaveChanges();
    }

1 个答案:

答案 0 :(得分:-1)

我在使用Task.Run时遇到问题(这是一种方法),因为它丢失了数据库上下文(注入)。

因此,我创建了一个新的数据库上下文,以便在此过程中使用。基本上是:

public IActionResult CipherData()
{
    Task.Run(() =>
    {
       //create a new dbcontext here   
       //perform database manipulation using this new dbcontext
    }
    return RedirectToAction("Index", "Home");
}