【问题标题】:Add method in que to later execution将 que 中的方法添加到稍后执行
【发布时间】:2014-11-05 07:12:29
【问题描述】:

我的 mvc 银行应用程序中有这个 PerformTransaction(); 方法。我的要求是insertTransaction();updatetransaction(); 这是执行的重要方法。

在执行这 2 个方法后,我想向用户显示成功消息,并且在后台剩余的方法应该正在处理中,以便稍后执行。因为每次调用此方法时都会对我的应用程序性能产生严重影响。我正在使用已提交的隔离级别。

这个记录过程很耗时,应该在后台运行。 (我正在使用 Linq to sql)

实现这一目标的正确方法是什么。我应该使用哪种方法?

public ActionResult PerformTransaction(int id = 0)
{
   insertTransaction();
   updatetransaction();
   //later execution
   insertlogg();
   updatelogg();
   logger();

    return Json(new
            {
                success = status.Status,
                message = status.Message
            });
}

【问题讨论】:

标签: c# asp.net sql-server asp.net-mvc linq


【解决方案1】:

我可以给你的建议是使用System.Threading 这样它会在执行后继续。

例如:

public ActionResult PerformTransaction(int id = 0)
{
   insertTransaction();
   updatetransaction();
   //later execution
   System.Threading.Thread TInsert = new System.Threading.Thread(insertlogg());
   TInsert.Start();
   System.Threading.Thread TUpdate = new System.Threading.Thread(updatelogg());
   TUpdate.Start();
   System.Threading.Thread TLogger = new System.Threading.Thread(logger());
   TLogger.Start();

   return View("Edit");
}

有关线程的更多信息,请参阅MSDN

我没有看到任何关于你的成功日志的例子,所以我不把它放在这里。

【讨论】:

  • 如果成功后用户立即请求另一个页面怎么办。那么这个线程会继续存在还是会被取消?
  • @user3111053 进程完成或出错时会自动关闭,但未完成时不会关闭。
猜你喜欢
  • 2020-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-24
  • 2017-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多