Visual Studioのビルドエラーチェック

Thread間で共有する情報をなるべくロックしないためにlockステートメント内でフラグを立ててステートメントを終わらせて(ロックを解除して)その後で時間がかかる処理をしようとしたら、ビルドエラーになった。
どうやら、if文の内側で設定した変数を外側で参照しているのが気にくわないらしい。チェックとしては正しいのではあるが、そのつもりでフラグを立てて制御しているので意味はない。
仕方がないのでlockステートメントを諦めてMonitor.Enter、Monitor.Exitを使うことにした。ミスするとロックが外れなくなるので嫌だったのだが。当然今度はちゃんと動いた。コードは短いし、最低限の処理だけを挟んでロックを解除しているので、Exitに失敗することはないだろう・・・