我在c#中制作了一个Windows控制台应用程序进行了一些计算.应用程序窗口对用户不可见,应用程序作为任务运行.
这些计算将保存到数据库中.不幸的是,如果用户在保存数据期间关闭此应用程序(通过关闭计算机)而不是所有数据都将被保存,我的计算将没有意义.
所以我正在寻找一些方法来防止应用程序以immadiately结束.有没有办法做到这一点?
我相信你在这里试图解决错误的问题.
最多可以通过将其System.Threading.Thread.IsBackground
属性设置为使线程使应用程序保持活动状态false
.但这远非可靠,因为用户将始终能够以您无法控制的方式终止您的进程(向您的进程发送终止信号,拔出电源插头等).
相反,请注意你说你正在进行一些计算并将它们保存在数据库中,如果保存它们会中断计算"没有意义"(据我所知,你的意思是数据库的完整性)将被妥协).这听起来就像是数据库事务的用例.
我们的想法是将您的计算作为单个事务提交,并让数据库管理系统确保每个工作单元的原子性,一致性,隔离性和持久性,并保持数据库的完整性.这样做的方式取决于您的DBMS,但核心思想是一样的.