如何保证长时间的操作完成

时间:2013-02-21 16:31:54

标签: asp.net-mvc-3

通常情况下,账单应该在预定的日期在后台执行(我还没想出怎么做,但这是另一个话题。)

但偶尔,用户可能希望手动执行结算。一旦点击,我想确保操作运行完成,无论用户端发生什么(例如关闭浏览器,机器死机,网络崩溃,等等)。

我非常确定db.SaveChanges()在事务中包装了它的数据库操作,所以从服务器的角度来看,我相信整个事情要么完成要么失败,没有部分影响。

但是POST和db.SaveChanges()之间的所有工作呢?有没有办法确保用户不会无意或有意地阻止它完成?

我想这个问题的必然结果是,如果用户断开连接,正在运行的异步控制器或正在运行的TaskThread会发生什么?

1 个答案:

答案 0 :(得分:0)

我之前的项目实际上是在MVC中进行计费系统。我清楚地记得测试如果我使用Task然后快速退出网站会发生什么。它完成了所有计算,在SQL Server中运行了一个存储过程,并在完成后向我发送了一封电子邮件。

所以,回答你的问题:如果你将操作包装在Task中,那么它应该完成而没有任何问题。