System.Transactions.TransactionScope
を使用して、トランザクション スコープの新しいインスタンスを作成するとプログラムが停止するだけのコードがあります。
例外やメッセージは表示されず、プログラムは単に停止し、Visual Studio はコード編集モードに戻ります。プロセスは完全になくなりました。イベント ビューアには、例外、メッセージ、またはイベントはありません。
問題なく TransactionScope を使用する別のテスト アプリがあるため、環境の問題ではないはずです。
例外の詳細を取得する方法がわかりません。例外がスローされたときにVSが自動的に中断することを期待して、Visual Studio内の[デバッグ]-> [例外]ダイアログですべての「スローされた」チェックボックスをオンにしましたが、そうではありません。
プログラムが終了する理由を教えてくれる人はいますか?
編集:新しいものを見つけました。TransactionScope は、 を介してバックグラウンド スレッドで実行されているメソッドで作成されていますThreadPool.QueueUserWorkItem
。メイン アプリケーション スレッドでメソッドを直接呼び出すと、この問題はなくなります。だから今私の質問は、「スレッドプールスレッドで TransactionScope を使用することの問題は何ですか?」です。新しいスレッドを呼び出す前にトランザクション スコープを開始していないことに注意してください。それはすべて、スレッドプール スレッドで実行されている 1 つのメソッド内にあります。