c#是在应用程序关闭之前指示代码块完成处理的
本文关键字:代码 处理 指示 应用程序 | 更新日期: 2023-09-27 18:09:33
我知道这不会在所有情况下工作,但请记住以下3种情况:
- IIS重置-如果代码在IIS 中运行
- 服务器重启或关闭
- 用户关闭应用程序(如果是Windows窗体或控制台应用程序)。
假设我有一个运行循环的代码块。是否有一种方法可以确保至少当前循环项目在应用程序关闭之前得到处理。
这样的…
循环运行:100项,应用程序被关闭(原因如上),应用程序在循环53中忙于项。它首先完成foreach…之间该项的所有代码。然后允许应用程序优雅地关闭。
这种事可能吗?
我不会这样做,但如果可以滥用系统,您可以使用CriticalFinalizerObject
保证执行
即使在CLR强制卸载应用程序域或中止线程的情况下
我真的不这么认为。你被困在窗户前了。Windows会替你做这种决定……如果有人关闭了电脑,那么你就被关闭了。这是相同的场景,如果他们在电源故障。在这种情况下你会怎么做?
对于一个普通的应用程序:当你的代码运行在前台线程(不是ThreadPool或thread。IsBackground == true),除非用户强制退出进程,否则进程不会中途终止。
如果你在后台线程中运行循环,你可以尝试处理应用程序的退出事件,等待循环完成或至少在终止之前达到稳定状态
在大多数应用程序中,你可以处理关闭事件而不允许它发生,但是当用户决定杀死你的进程时,你不能做任何事情。所以我认为这是不可能的
这样做怎么样?使用try catch,最后在静态void Main中这里即使结束了任务的应用程序,最后也会运行。不确定是不是停电了
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
try
{
Application.Run(new Form1());
}
finally
{
MessageBox.Show("I run always.");
}
}
希望有所帮助