ワーカースレッドのメソッドで、Mutex
という名前のアクセスが集中するように、Windowsサービスをリファクタリングしています。 OnStop()
と~DerivedService()
でリリースする代わりに、finallyブロックでリリースする必要があります。私はShiftキー+ F5デバッグを停止して、それを期待すると(例外を丁寧よりも深刻)のクラッシュを打ったとき、私はデストラクタ呼び出しのスキップを観察してきました「最終的に」コードブロックがスキップされる理由は何ですか?
はfinallyブロックスキップするだけの理由だろう。私は、私は、サービスコードを交換するrigmorale前に、ここで任意の厄介な驚きを片付けることを望んでログインしてたサービスとそのワーカースレッドをコーディングデバッガを添付していますなどとして
感謝。
場合は一般的に、私はに非常に新しいですWindowsスレッドとプロジェクトとデータはそれほど複雑ではありません。私はちょうどunsync'edブロックからのsync'ingに関するエラーは、スレッドローカル(MSDNのように)ミューテックスロックの性質を参照して、実際には私のためのより良い場所を探していることに気づいたクリーンアップコード。サービスで爆発する可能性のあるすべての出来事を完全に理解したことはありませんでした。 – John
私は 'AbandonedMutexExceptions'を期待していましたが、私がその中に入ったとき、私が言及したエラーの「同期していないブロックから同期しています」というエラーが発生しました。 – John