异步操作中的依赖项和执行顺序

 

发布日期: 2017年1月

适用于: Dynamics 365 (online),Dynamics 365 (on-premises),Dynamics CRM 2016,Dynamics CRM Online

一个异步操作可以依赖于另一个异步操作。 只有在被依赖的操作完成后,才会执行依赖异步操作。 例如,如果异步操作 B 依赖于异步操作 A,则只有在操作 A 执行完成后,才会执行操作 B。 通过设置可包含任意字符串值的 AsyncOperation.DependencyToken 属性来建立异步操作之间的这种依赖关系。 任何依赖异步操作必须具有相同的 AsyncOperation.DependencyToken 值。

Microsoft Dynamics 365 平台在异步队列中创建操作时建立所依赖的异步操作。 例如,假设有三个异步操作 A、B 和 C,其中 B 和 C 应仅在 A 完成后才能执行。 要建立正确的依赖关系,A 必须首先创建,然后依次创建 B 和 C。这是因为操作创建的顺序就是它们执行的顺序。 在该示例中,所有三个异步操作都有相同的 AsyncOperation.DependencyToken。 在运行时,A 首先执行。 在 A 完成后,执行 B,在 B 执行完成后,最后才执行 C。

在上述示例中,如果 B 推迟执行,则操作 A 会执行,但不会执行操作 C,除非操作 B 不再推迟而执行完成后才会执行操作 C。 您可以使用 AsyncOperation.PostponeUntil 属性推迟异步操作的执行。

AsyncOperation.DependencyToken 值为 null 的异步操作会独立于队列中的所有其他异步操作。 无法保证其他独立操作的执行顺序。 但是,早创建的异步操作更有机会在晚创建的操作前面执行。  前提是操作没有推迟,并且未设置为“已完成”状态。

必须在创建异步操作时设置依赖令牌。 因为 Microsoft Dynamics 365 针对批量操作(如批量电子邮件、批量删除和导入)创建异步操作,所以您无法对这些操作使用依赖令牌。 此外,依赖令牌无法用于按顺序执行异步注册插件,因为执行插件的异步操作是由队列管理器创建的。 有关详细信息,请参阅异步服务体系结构

另请参阅

Microsoft Dynamics 365 中的异步服务
异步作业执行中的定期模式

Microsoft Dynamics 365

© 2017 Microsoft。 保留所有权利。 版权