非同步處理作業中的相依性和執行順序
發行︰ 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 會接著執行直到結束,然後輪到 C 完成其作業。
在前一個範例中,如果 B 作業延遲,作業 A 會持續執行直到結束,作業 C 會被阻擋,直到作業 B 的延誤以及作業結束為止。 您可以使用 AsyncOperation.PostponeUntil 屬性來延遲非同步作業。
任何 AsyncOperation.DependencyToken 值為 null 的非同步作業可以在佇列中執行,且不與其他非同步作業相依。 不保證和其他非相依作業的操作執行順序。 不過,較早建立的非同步作業比較可能在較晚建立的作業之前執行。 這會假設作業並未延遲,而且未設定為 [已完成] 狀態。
相依性 token 必須在非同步處理作業建立後設定。 因為 Microsoft Dynamics 365 建立大量作業的非同步作業,例如大量電子郵件,大量刪除與匯入,您無法使用這些作業的相依性 token。 此外,相依性 token 無法用來指定非同步註冊外掛程式的執行,因為執行外掛程式的非同步作業是由佇列管理員所建立。 如需相關資訊,請參閱 非同步服務架構。
另請參閱
Microsoft Dynamics 365 的非同步服務
非同步工作執行的週期模式
Microsoft Dynamics 365
© 2017 Microsoft. 著作權所有,並保留一切權利。 著作權