簡體   English   中英

C#Console應用程序未調用finally塊

[英]C# Console App Not Calling Finally Block

我正在編寫一個控制台應用程序作為計划任務運行,當您使用關閉按鈕關閉它時,它似乎不執行正在運行的代碼的finally塊。 我嘗試使用以下非常簡單的控制台應用程序復制此行為:

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塊似乎不會在此測試或我的生產代碼中運行。

我認為最后塊總是運行(這不是它們的全部意義嗎?)。 這里發生了什么?

除非進程本身突然終止,否則finally塊將始終運行 - 這就是這里發生的事情。 它不像Thread.Sleep拋出一個異常,並且堆棧優雅地展開 - 整個過程只是被中止。 至少據我所知:)

事實證明我需要做的是從這個答案中復制代碼: Capture console exit C#

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM