CommittableTransaction.Commit メソッド
アセンブリ: System.Transactions (system.transactions.dll 内)



このメソッドが呼び出されると、トランザクションに参加するように登録されているすべてのオブジェクトがポーリングされ、トランザクションをコミットするかロールバックするかの決定が個別に示されます。いずれかの参加要素がトランザクションのロールバックを決定した場合、トランザクションがロールバックされ、このメソッドが TransactionException 例外をスローします。これはトランザクションに対する通常の動作であり、このような例外はコードでキャッチして処理する必要があります。
このメソッドは同期的に動作し、トランザクションがコミットまたは中止されるまでブロックします。そのため、このメソッドを Windows フォーム (WinForm) アプリケーションで使用する場合は、デッドロックの発生に十分な注意が必要です。WinForm コントロール イベント (ボタン クリックなど) でこのメソッドを呼び出し、トランザクションの処理中に同期メソッド Invoke を使用して、制御をなんらかの UI タスク (色の変更など) にリダイレクトした場合、デッドロックが発生します。これは、Invoke メソッドが同期的に動作し、UI スレッドが処理を終えるまでワーカー スレッドがブロックされるためです。また、この場合、UI スレッド側も、ワーカー スレッドがトランザクションのコミットを完了するまで待機しようとします。その結果、いずれも処理を行うことができず、決して終わることのないコミット処理を無期限に待機することとなってしまいます。このため、できるだけ Invoke は使わずに、非同期で動作する BeginInvoke を使用することをお勧めします。こうすることで、デッドロックの発生を抑えることができます。

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からCommittableTransaction.Commit メソッドを検索する場合は、下記のリンクをクリックしてください。

- CommittableTransaction.Commit メソッドのページへのリンク