Ne pas utiliser l’exécution en parallèle dans les plug-ins et les activités de workflow

Catégorie : Conception, performances, sécurité, capacité de prise en charge

Potentiel d’impact : Élevé

Symptômes

Les de multithreading ou de threads en parallèle dans les plug-ins ou les activités de workflow personnalisées peuvent endommager ceux-ci dans les connexions. Par exemple, exécuter des threads en parallèle peut enregistrer des exceptions comme :

Generic SQL error. The transaction active in this session has been committed or aborted by another session.

En outre, les objets non thread-safe, tels que les éléments dans l’espace de noms System.Collections peuvent être endommagés par les threads en parallèle.

Recommandation

Le service Sandbox a été conçu pour exécuter des appels dans un ordre spécifique dans le cadre d’une transaction. Le développement des plug-ins ou des activités de workflow personnalisés pour effectuer des appels de threads en parallèle ou de multithreading ne sont pas pris en charge. Développez vos plug-ins et vos activités de workflow personnalisées sachant que les appels effectués seront passés de manière séquentielle et peuvent devoir être annulés.

Notes

L’utilisation de l’exécution en parallèle d’un programme client est une pratique prise en charge pour optimiser les performances en conséquence. Cette procédure est spécifique au code écrit pour être exécuté dans un plug-in ou une activité de workflow personnalisée.

Schémas problématiques

Les plug-ins et les activités de workflow personnalisées s’exécutent en une transaction simple et plusieurs threads entrés par une exécution en parallèle peuvent endommager la transaction. Les exemples suivants présentent des modèles et méthodes qui ne doivent pas être employés dans les plug-ins et les activités de workflow personnalisées :

Informations supplémentaires

L’utilisation et la mise à jour d’objets de contexte du pipeline partagé peuvent entraîner des résultats inattendus dans ces objets ou que ceux-ci soient endommagées. L’impact entraînerait un échec du plug-in ou de l’activité de workflow personnalisée.

Voir aussi

Traitement en parallèle, concurrence et programmation asynchrone dans .NET

Notes

Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)

Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).