Compartir por


Uso ExecuteAsync para ejecutar mensajes forma asincrónica

Salvo algunas operaciones que se descfiben a continuación, todas las operaciones de datos utilizando clases de solicitud de ensamblado SDK son sincrónicas.

Importar una solución es una operación que puede requerir considerables recursos, por lo que hay una opción para ejecutar esta operación de forma asincrónica mediante la clase de solicitud ExecuteAsyncRequest. La clase de solicitud DeleteAndPromoteRequest realiza operaciones con un uso intensivo de recursos similar.

Importar una solución de forma asincrónica mejora el rendimiento del sistema al posponer la ejecución de mensajes hasta un tiempo después, cuando se disminuya la carga del servidor. Los usuarios interactivos no tienen que esperar al mensaje de destino para ejecutarse antes de poder continuar. Esto es especialmente útil para importar soluciones que pueden tardar unos minutos o más en ejecutarse.

La combinación de filas con una gran cantidad de actividades relacionadas u otros tipos de tablas también puede llevar mucho tiempo actualizar todas las filas relacionadas, por lo que ejecutarlas en segundo plano puede mejorar la experiencia del usuario.

Nota

ImportSolutionRequest, DeleteAndPromoteRequest y MergeRequest son las únicas clases de solicitud que se pueden usar con el mensaje ExecuteAsyncRequest.

Use la clase de solicitud de ExecuteAsyncRequest para ejecutar un mensaje asincrónicamente. Configure la solicitud y pase la instancia de solicitud como argumento a IOrganizationService.Execute. ExecuteAsyncResponse vuelve con el Id. del trabajo asincrónico. Puede (opcionalmente) crear una consulta del trabajo con el Id. para buscar su estado actual.

Puede usar la clase de solicitud ExecuteMultipleRequest para poner en cola varias soluciones para que se importen de forma asincrónica. Para hacer esto, agregue una o más solicitudes de mensaje ExecuteAsync a una solicitud de mensaje ExecuteMultiple. Según las restricciones de limitación que mejoran el rendimiento del sistema general, solo puede ejecutarse asincrónicamente un mensaje a la vez para cada organización.

Para obtener más información acerca del mensaje ExecuteMultiple, consulte Ejecutar varias solicitudes con SDK para .NET.

Ejemplo

El siguiente ejemplo muestra cómo usar la clase de solicitud de mensaje ExecuteAsyncRequest con la clase de solicitud de mensaje ImportSolutionRequest.

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;

A continuación puede sondear la tabla AsyncOperation usando el valor asyncOperationId del trabajo del sistema con el AsyncOperationId que coincide para detectar cuándo el valor de StatusCode indica si la operación se ha realizado correctamente (30), con error (31), o se cancela (32).

Consulte también

Use estos mensajes con el SDK para .NET
Uso de ExecuteTransaction
Ejemplo: ejecutar varias solicitudes usando SDK para .NET

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).