コードパターン

処理中はフラグを立てて、最後にフラグを落とすような処理の場合、try、finallyで書いていたほうが確実かも。
処理中に例外が発生したり、意図せず終了してしまうような場合、フラグを落とさずに別の処理になってしまうことがあるような。
コードの意図がはっきりしてよいかな。
スレッドの場合、finallyが実行されないような場合もあるようだ。
・Finally文が実行されないケースはあるか?: .NET Tips: C#, VB.NET, Visual Studio
http://dobon.net/vb/dotnet/beginner/tryfinally.html
この場合、ウィンドウメッセージで終了がよばれるような場合(OSの終了とか、ウィンドウハンドルでの終了とか)はアプリケーションの終了がスレッドとは別のタイミングで実行されてしまったりもある。
また.Net1.1と2で挙動が異なる。注意しておくべき。
・[.NET]finally 句と ThreadAbort
http://d.hatena.ne.jp/NyaRuRu/20060531/p1
・[.NET]ThreadAbort と EscalationPolicy
http://d.hatena.ne.jp/NyaRuRu/20060602/p1