IEnlistmentNotification.Prepare(PreparingEnlistment) メソッド


トランザクションのコミットの準備中であることを参加オブジェクトに通知します。Notifies an enlisted object that a transaction is being prepared for commitment.

 void Prepare(System::Transactions::PreparingEnlistment ^ preparingEnlistment);
public void Prepare (System.Transactions.PreparingEnlistment preparingEnlistment);
abstract member Prepare : System.Transactions.PreparingEnlistment -> unit
Public Sub Prepare (preparingEnlistment As PreparingEnlistment)



トランザクション マネージャーに応答を送信するために使用する PreparingEnlistment オブジェクト。A PreparingEnlistment object used to send a response to the transaction manager.


トランザクションマネージャーは、コミットメントのフェーズ1で、トランザクションをコミットできるかどうかを参加者に確認するときに、参加しているリソースマネージャーのこのメソッドを呼び出します。The transaction manager calls this method of an enlisted resource manager during the phase 1 of a commitment, when it asks participants whether they can commit the transaction.

持続性のあるリソースマネージャーを実装する場合は、このフェーズで準備レコードをログに記録する必要があります。When you are implementing a durable resource manager, you should log your prepare record during this phase. このレコードには、回復を実行するために必要なすべての情報が含まれている必要があります。The record should contain all the necessary information to perform recovery. これには、 RecoveryInformation 復旧中にメソッドのトランザクションマネージャーに渡されるプロパティが含まれ Reenlist ます。This includes the RecoveryInformation property, which is passed to the transaction manager in the Reenlist method during recovery. 回復の詳細については、「回復の実行」を参照してください。For more information on recovery, see Performing Recovery.

リソースマネージャーは、 Prepared preparingEnlistment コミットメントの投票を示すために、パラメーターのメソッドを呼び出す前に完了する必要があるすべての作業を完了する必要があります。Your resource manager should complete all work that must be finished before calling the Prepared method of the preparingEnlistment parameter to indicate its vote for commitment. コミット、ロールバック、または不明なフェーズ2の通知を受け取る前に、これが確実に実行されるようにする必要があります。You should make sure that this is accomplished before receiving any phase 2 notification such as commit, rollback or in doubt. フェーズ2の通知は、 Prepared フェーズ1でメソッドを呼び出したのと同じスレッドでインラインで発生する可能性があるためです。This is because phase 2 notifications can happen inline on the same thread that called the Prepared method in phase 1. このため、フェーズ 2 の通知を受け取る前に既に完了したと考えられる作業 (ロックの解除など) は、Prepared 呼び出しの後には実行できません。As such, you should not do any work after the Prepared call (for example, releasing locks) that you would expect to have completed before receiving the phase 2 notifications.

パラメーターのメソッドを呼び出して、 preparingEnlistment ロールバックの投票を示すこともできます。You can also call the method of the preparingEnlistment parameter to indicate a vote for rollback.

オブジェクトがトランザクションの進行状況を確認し、それに関与せずに処理するようにするには、このメソッドの実装で、 Done preparingEnlistment 作業が完了したときにパラメーターのメソッドを呼び出す必要があります。If you want the object to merely observe and react to the progress of the transaction, without participating in it, your implementation of this method should call the Done method of the preparingEnlistment parameter when it has finished its work. これにより、リソースマネージャーはフェーズ2の通知を受け取りません。By doing so, your resource manager would not receive any phase 2 notification.