Ни код, который следует за блоком finally, ни код во внешних областях, не будут выполняться без того, чтобы сначала был запущен блок finally (исключение в блоке finally может привести к преждевременному выходу из него, и в этом случае выполнение будет выпадать из финализатор к внешнему объему). Если код до блока finally застревает в бесконечном цикле или в методе, который никогда не завершается, или если контекст выполнения полностью разрушен, блок finally не будет выполнен.
Обратите внимание, что следует полагаться на блоки finally, в отличие от методов "Finalize" (или "деструкторов" C #), на которые нельзя полагаться должным образом.