Environment.Exit 需要很长时间才能关闭应用程序
Environment.Exit takes long time to close the application
我正在尝试解决我不清楚的问题。
调用 Environment.Exit(0)
时,大约需要 22 秒才能关闭应用程序。
if (AppDomain.CurrentDomain.IsDefaultAppDomain())
{
Environment.Exit(exitCode);
}
你知道幕后发生了什么吗?
我虽然可能抛出异常,但我检查了异常对话框中的所有复选框。
如果您了解 .NET 应用程序的工作原理以及 Environment.Exit
的工作原理,那么幕后发生的事情就很清楚了。
简而言之,Environment.Exit
不是退出任意应用程序的最快方法。它仍然等待任何挂起的终结器 运行(如果它们 运行 足够快,它们总共只有 30 秒的 IIRC)。如果您正在使用例如套接字,终结器很可能需要几秒钟才能 运行.
最简单的检查方法当然是使用调试器 - 只需在关闭时暂停,您就会看到哪些线程正在实际执行,以及它们正在执行什么。
我正在尝试解决我不清楚的问题。
调用 Environment.Exit(0)
时,大约需要 22 秒才能关闭应用程序。
if (AppDomain.CurrentDomain.IsDefaultAppDomain())
{
Environment.Exit(exitCode);
}
你知道幕后发生了什么吗? 我虽然可能抛出异常,但我检查了异常对话框中的所有复选框。
如果您了解 .NET 应用程序的工作原理以及 Environment.Exit
的工作原理,那么幕后发生的事情就很清楚了。
简而言之,Environment.Exit
不是退出任意应用程序的最快方法。它仍然等待任何挂起的终结器 运行(如果它们 运行 足够快,它们总共只有 30 秒的 IIRC)。如果您正在使用例如套接字,终结器很可能需要几秒钟才能 运行.
最简单的检查方法当然是使用调试器 - 只需在关闭时暂停,您就会看到哪些线程正在实际执行,以及它们正在执行什么。