完了ビットの設定

COM+ は、次のように、コンテキスト プロパティの状態 (完了ビット) に基づいて JIT アクティベーションされているオブジェクトを非アクティブ化します。

  • 完了ビットが True に設定されている場合、COM+ は、現在のメソッド呼び出しが値を返すときにオブジェクトを非アクティブ化します。
  • 完了ビットが False に設定されている場合、現在のメソッド呼び出しが値を返すときにオブジェクトはアクティブのままになります。

既定では、完了ビットは、オブジェクトが作成され、そのコンテキストが初期化されたときに False に設定されます。 (JIT アクティベーションされているオブジェクトは、設定する独自の実行ビットが含まれるよう、独自のコンテキストで作成されます)。ただし、自動実行プロパティを使用することにより、メソッド単位でこの既定の設定を変更できます。 完了ビットは次の方法で設定できます。

IContextState の使用

IContextState::SetDeactivateOnReturn を使用して、完了ビットを True または False に設定できます。

IContextState::GetDeactivateOnReturn を使用して、オブジェクト コンテキストから完了ビットの現在の状態を取得できます。

IObjectContext の使用

IObjectContext で次のメソッドを使用して、トランザクションでの投票に使用される整合性ビットを同時に設定しながら、完了ビットを設定できます。

  • SetComplete は、完了したことと、現在のトランザクションをコミットするために投票することを通知します。 完了ビットと整合性ビットの両方を True に設定します。
  • SetAbort は、完了したことを通知し、現在のトランザクションを終了します。 完了ビットを True に設定し、整合性ビットを False に設定します。
  • EnableCommit は、完了していないが、トランザクションのコミットに投票することを通知します。 完了ビットを False に設定し、整合性ビットを True に設定します。
  • DisableCommit は、完了しておらず、この時点でトランザクションをコミットしないことに投票することを通知します。通常は、状態が整合性がないためです。 完了ビットと整合性ビットの両方を False に設定します。

COM+ Just-In-Time アクティベーションの概念

コンポーネントの JIT アクティベーションの有効化

オブジェクト プールと COM+ JIT アクティベーション

トランザクションと COM+ JIT アクティベーション