首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C#控制台应用程序未调用最终阻止

C#控制台应用程序未调用最终阻止
EN

Stack Overflow用户
提问于 2011-07-25 08:15:19
回答 2查看 757关注 0票数 4

我正在编写一个控制台应用程序,作为一个计划的任务运行,当您使用“关闭”按钮关闭它时,它似乎不会执行运行代码的最后一个块。我尝试用以下非常简单的控制台应用程序复制这种行为:

代码语言:javascript
运行
复制
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块。

我以为最后的阻塞总是跑(这不是他们的全部重点吗?)这里发生什么事情?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-25 08:17:14

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

票数 6
EN

Stack Overflow用户

发布于 2011-07-25 08:40:04

原来我需要做的是从这个答案中复制代码:Capture console exit C#

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6813306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档