gpt4 book ai didi

C# 控制台应用程序最终不调用 block

转载 作者:太空狗 更新时间:2023-10-30 00:34:45 25 4
gpt4 key购买 nike

我正在编写一个控制台应用程序以作为计划任务运行,当您使用关闭按钮关闭它时,它似乎没有执行正在运行的代码的 finally block 。我尝试使用以下非常简单的控制台应用程序复制此行为:

using System;
using System.Threading;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
try
{
Thread.Sleep(60000);
}
finally
{
Console.WriteLine("Finally");
}
}
}
}

当通过调试器运行时,这不会在 Console.WriteLine 行上遇到断点。我不确定这个简单的测试是否按预期工作,或者为什么 finally block 似乎没有在这个测试或我的生产代码中运行。

我认为 finally block 总是运行(这不是它们的全部意义吗?)。这是怎么回事?

最佳答案

finally block 将始终 运行,除非进程本身突然终止 - 这就是这里发生的情况。这不像是 Thread.Sleep 正在抛出异常,并且堆栈正在优雅地展开 - 整个过程只是被中止了。至少据我所知:)

关于C# 控制台应用程序最终不调用 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6813306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com