スケジュールされたタスクとして実行するコンソール アプリを作成していますが、閉じるボタンを使用して閉じると、実行中のコードの 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 ブロックは常に実行されると考えていました (それがブロックの要点ではありませんか?)。ここで何が起こっているのですか?