如何在完成任务之前阻止应用关闭?

时间:2015-12-22 17:48:45

标签: c# console-application

我在c#中创建了一个Windows控制台应用程序进行了一些计算。应用程序窗口对用户不可见,应用程序作为任务运行。

这些计算将保存到数据库中。不幸的是,如果用户在保存数据期间关闭此应用程序(通过关闭计算机)而不是所有数据都将被保存,我的计算将无法理解。

因此,我正在寻找一些方法来阻止应用程序以immadiate方式关闭。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:6)

我相信你在这里试图解决错误的问题。

最多可以通过将System.Threading.Thread.IsBackground属性设置为false来使线程保持应用程序处于活动状态。但这远非可靠,因为用户将始终能够以您无法控制的方式终止您的进程(向您的进程发送终止信号,拔出电源插头等)。

相反,请注意您说您正在进行一些计算并将其保存在数据库中,并且计算结果并没有意义。"如果保存它们会中断(据我所知,你的意思是数据库的完整性会受到影响)。这听起来就像database transactions的用例。

这个想法是您将计算作为单个事务提交,并让数据库管理系统确保每个工作单元的atomicity, consistency, isolation and durability并保持数据库的完整性。这样做的方法取决于您的DBMS,但核心思想是一样的。