如何防止应用程序在完成任务前关闭?

How to prevent app from closing before finishing a task?

我用 c# 制作了一个 Windows 控制台应用程序,可以进行一些计算。应用程序 window 对用户不可见,应用程序作为任务运行。

这些计算已保存到数据库中。不幸的是,如果用户在保存数据(通过关闭计算机)期间关闭此应用程序并且不会保存所有数据,我的计算将没有意义。

所以我正在寻找一些方法来防止应用程序立即关闭。有什么方法可以做到吗?

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

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

相反,请注意您是说您正在做一些计算并将它们保存在数据库中,如果保存它们的计算 "won't make sense" 被中断(据我了解,您的意思是完整性的数据库将受到损害)。这听起来很像 database transactions.

的用例

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