Partilhar via


Ordem de dependência e execução nas operações assíncronas

 

Publicado: novembro de 2016

Aplicável a: Dynamics CRM 2015

Uma operação assíncrona pode ser dependentes de outra operação assíncrona. Uma operação assíncrona dependente não é executada enquanto a operação dependente não tiver terminado de executar. Por exemplo, se a operação assíncrona B depende da operação assíncrona A, a operação B não pode ser executada até a conclusão da execução da operação A. Essa dependência entre essas operações assíncronas é estabelecida pela definição do atributo AsyncOperation.DependencyToken, que pode ter qualquer valor de cadeia de caracteres. Qualquer operação assíncrona dependente deve ter o mesmo valor de AsyncOperation.DependencyToken.

A plataforma Microsoft Dynamics 365 estabelece que a operação assíncrona é dependente quando as operações são criadas na fila assíncrona. Por exemplo, considere três operações assíncronas, chamadas A, B e C, onde B e C devem ser executadas somente após A ter sido concluída. Para estabelecer as dependências corretas, A deve ser criada na primeira fila, seguido por B e C. Isso ocorre porque a ordem na qual operações são criadas estabelece a sequência de sua execução. Neste exemplo, todas as três operações assíncronas têm o mesmo AsyncOperation.DependencyToken. No tempo de execução, execute primeiro A. Após concluir A, execute B até a conclusão e execute C até a conclusão.

No exemplo anterior, se a operação B for adiada, a operação A executa até ser concluída e a operação C é bloqueada até que a operação B não seja mais adiada e executa até a conclusão. Você pode adiar a execução de uma operação assíncrona usando o atributo AsyncOperation.PostponeUntil.

Qualquer operação assíncrona que tem um valor de AsyncOperation.DependencyToken de null executa independentemente de qualquer operação assíncrona na fila. A ordem de execução em relação a outras operações independentes não é garantida. Entretanto, operações assíncronas criadas anteriormente tem uma possibilidade melhor antes de executar operações depois de criadas.  Isso deduz também que as operações não são proteladas e não são definidas a um estado Concluído.

O token de dependência deve ser definido quando a operação assíncrona é criada. Como o Microsoft Dynamics 365 cria operações assíncronas para operações em massa como email em massa, exclusão em massa e importação, não é possível utilizar o token de dependência para essas operações. Além disso, o token de dependência não pode ser usado para ordenar a execução de plug-ins registrados assíncronos porque a operação assíncrona executando plug-ins é criada pelo Gerenciador de Fila. Para obter mais informações, consulte Arquitetura de serviço assíncrono.

Confira Também

Serviço assíncrono no Microsoft Dynamics CRM 2015
Padrão de recorrência na execução de trabalho assíncrono

© 2017 Microsoft. Todos os direitos reservados. Direitos autorais