Verwenden von ExecuteAsync zum asynchronen Ausführen von Messages

Bis auf einige der unten beschriebenen Vorgänge sind alle Datenvorgänge unter Verwendung der SDK-Assembly-Anfrageklassen synchron.

Das Importieren einer Lösung ist ein Vorgang, der beträchtliche Ressourcen erfordern kann, es gibt also eine Option zum asynchronen Ausführen dieses Vorgangs unter Verwendung der ExecuteAsyncRequest-Anfrageklasse. Die DeleteAndPromoteRequest-Anfrageklasse führt ähnliche ressourcenintensive Vorgänge aus.

Das asynchrone Importieren einer Lösung verbessert die Systemleistung durch das Zurückstellen der Message-Ausführung auf einen späteren Zeitpunkt, zu dem die Serverlast möglicherweise geringer ist. Interaktive Benutzer müssen nicht auf die Zielnachricht, bis die Zielnachricht ausgeführt wird, um fortzufahren. Dies ist besonders nützlich beim Importieren von Lösungen, deren Ausführung einige Minuten oder mehr dauern kann.

Das Aktualisieren aller verwandten Zeilen beim Zusammenführen von Zeilen mit einer großen Anzahl verwandter Aktivitäten oder anderer Tabellentypen kann ebenfalls lange dauern, sodass die Ausführung dieser Zeilen im Hintergrund das Benutzererlebnis verbessern kann.

Hinweis

ImportSolutionRequest, DeleteAndPromoteRequest und MergeRequest sind die einzigen Anfrageklassen, die mit ExecuteAsyncRequest verwendet werden können.

Verwenden Sie die ExecuteAsyncRequest-Anfrageklasse, um eine Message asynchron auszuführen. Konfigurieren Sie die Anforderung und übergeben Sie die Anforderungsinstanz als Argument an IOrganizationService.Execute. ExecuteAsyncResponse wird mit der ID des asynchronen Auftrags zurückgegeben. Sie können (optional) den Auftrag mithilfe der ID abfragen, um seinen aktuellen Status herauszufinden.

Sie können die Anforderungsklasse ExecuteMultipleRequest verwenden, um mehrere asynchron zu importierende Lösungen in die Warteschlange zu stellen. Fügen Sie dazu eine oder mehrere ExecuteAsync-Nachrichtenanforderungen zu einer ExecuteMultiple-Nachrichtenanforderung hinzu. Aufgrund der Drosselungseinschränkungen, die die Systemleistung verbessern, darf nur eine Meldung, die nur asynchron ausgeführt wird, für eine Organisation gleichzeitig ausgeführt werden.

Weitere Informationen zur ExecuteMultiple-Nachricht finden Sie unter Mehrere Anforderungen mit dem SDK für .NET ausführen.

Beispiel

Im folgenden Beispiel wird gezeigt, wie die ExecuteAsyncRequest-Message-Anforderungsklasse mit der ImportSolutionRequest-Message-Anforderungsklasse verwendet wird.

string ManagedSolutionLocation = @"C:\temp\ManagedSolutionForImportExample.zip";

byte[] fileBytes = File.ReadAllBytes(ManagedSolutionLocation);

ImportSolutionRequest impSolReq = new ImportSolutionRequest()
{
CustomizationFile = fileBytes
};

ExecuteAsyncRequest asyncReq = new ExecuteAsyncRequest()
{
Request = impSolReq
};

var asyncResp = (ExecuteAsyncResponse)svc.Execute(asyncReq);

Guid asyncOperationId = asyncResp.AsyncJobId;

Sie können dann die AsyncOperation-Tabelle mithilfe des asyncOperationId-Werts für den Systemauftrag abrufen, der mit AsyncOperationId übereinstimmt, um zu erkennen, wann der StatusCode-Wert angibt, ob der Vorgang erfolgreich war (30), fehlgeschlagen ist (31) oder storniert wurde (32).

Siehe auch

Nachrichten mit dem SDK für .NET verwenden
Verwenden von ExecuteTransaction
Mehrere Anforderungen mit dem SDK für .NET ausführen

Hinweis

Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)

Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).