次の方法で共有


非同期操作での依存関係および実行順序

 

公開日: 2017年1月

対象: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online

非同期操作間に、依存関係を確立することができます。 依存非同期操作は、依存先の操作が完了するまで実行されません。 たとえば、非同期操作 B が非同期操作 A に依存している場合、非同期操作 B は非同期操作 A が完了するまで実行されません。 非同期操作間のこのような依存関係は、AsyncOperation.DependencyToken 属性を設定することによって確立されます。この属性には、任意の文字列値を含めることができます。 依存している非同期操作には、同じ AsyncOperation.DependencyToken 値が必要です。

Microsoft Dynamics 365 プラットフォームでは、非同期キュー内に操作が作成される際に、どちらの非同期操作が依存する側であるかが確立されます。 たとえば、A、B、および C という 3 つの非同期操作があり、B と C は A の完了後に実行する必要があるとします。 正しい依存関係を確立するには、最初に A をキュー内に作成して、次に B、そして C を作成します。これは、操作が作成された順番によって、実行順序が決まるためです。 この例では、3 つの非同期操作がすべて同じ AsyncOperation.DependencyToken を持ちます。 実行時に、A が最初に実行されます。 A が完了した後に、B が実行されて完了し、そして C が実行され、完了します。

前述の例で、操作 B が延期された場合、操作 A の実行が完了しても、操作 B の延期が解除されて実行が完了するまで、操作 C はブロックされます。 非同期操作の実行を延期するには、AsyncOperation.PostponeUntil 属性を使用します。

AsyncOperation.DependencyToken 値が null の非同期処理は、キュー内の他のすべての非同期処理に関係なく実行されます。 他の独立した操作について、その実行順序は保証されません。 ただし、先に作成された非同期処理は、後に作成された非同期処理の前に実行される可能性が高くなります。  これは、その処理が延期されないことと、完了の状態に設定されていないことが前提です。

非同期操作の作成時に依存関係トークンを設定する必要があります。Microsoft Dynamics 365 では、一括メール、一括削除、およびインポートなどの一括操作に対して非同期操作が作成されるため、このような操作に依存関係トークンを利用することはできません。 また、プラグインを実行する非同期操作はキュー マネージャーによって作成されるため、依存関係トークンを使用して非同期の登録プラグインの実行順序を決めることはできません。 詳細については、「非同期サービスのアーキテクチャ」を参照してください。

関連項目

Microsoft Dynamics 365 での非同期サービス
非同期ジョブ実行の定期的なパターン

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 著作権