Condividi tramite


Dipendenza ordine di esecuzione nelle operazioni asincrone

 

Data di pubblicazione: gennaio 2017

Si applica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Un'operazione asincrona può essere resa dipendente da un'altra operazione asincrona. Un'operazione asincrona dipendente non viene eseguita fintanto che non è terminata l'operazione da cui dipende. Ad esempio, se l'operazione B asincrona è dipendente dall'operazione asincrona A, l'operazione B viene eseguita solo dopo il completamento dell'operazione A. Questa dipendenza tra operazioni asincrone viene definita impostando l'attributo AsyncOperation.DependencyToken, che può contenere qualsiasi valore stringa. Tutte le operazioni asincrone dipendenti devono avere lo stesso valore in AsyncOperation.DependencyToken.

La piattaforma Microsoft Dynamics 365 stabilisce quale operazione asincrona è dipendente quando vengono create le operazioni nella coda asincrona. Ad esempio, se si considerano tre operazioni asincrone denominate A, B e C, B e C saranno eseguite solo dopo che è stata completata l'esecuzione di A. Per impostare le dipendenze corrette, A deve essere creata per prima nella coda, seguita da B e quindi da C. Questo perché l'ordine in cui le operazioni vengono create stabilisce la sequenza della loro esecuzione. In questo esempio, tutte e tre le operazioni asincrone hanno lo stesso AsyncOperation.DependencyToken. In fase di esecuzione, A viene eseguita per prima. Una volta completata A, viene eseguita B fino a completamento, quindi viene eseguita C fino a completamento.

Nell'esempio precedente, se l'operazione B viene posticipata, l'operazione A viene eseguita fino a completamento e l'operazione C viene bloccata fino a quando l'operazione B può essere eseguita fino a completamento. È possibile posticipare l'esecuzione di un'operazione asincrona utilizzando l'attributo AsyncOperation.PostponeUntil.

Tutte le operazioni asincrone che hanno il valore di AsyncOperation.DependencyToken impostato su null vengono eseguite indipendentemente da tutte le altre operazioni asincrone nella coda. L'ordine di esecuzione rispetto ad altre operazioni indipendenti non è garantito. Tuttavia, le operazioni asincrone create in precedenza hanno più possibilità di essere eseguite prima delle operazioni create successivamente.  Si presuppone in questo caso che le operazioni non vengano posticipate e non siano impostate sullo stato Completato.

Il token di dipendenza deve essere impostato durante la creazione dell'operazione asincrona. Poiché Microsoft Dynamics 365 crea operazioni asincrone per operazioni in blocco quali la posta elettronica in blocco, l'eliminazione in blocco e l'importazione in blocco, non è possibile utilizzare i token di dipendenza per tali operazioni. Inoltre, il token di dipendenza non può essere utilizzato per impostare l'ordine di esecuzione dei plug-in registrati asincroni perché l'operazione asincrona che esegue i plug-in viene creata dal Gestore code. Per ulteriori informazioni, vedere Architettura del servizio asincrono.

Vedere anche

Servizio asincrono in Microsoft Dynamics 365
Modello ricorrente in esecuzione processo asincrono

Microsoft Dynamics 365

© 2017 Microsoft. Tutti i diritti sono riservati. Copyright