Share via


Verwenden Sie keine parallele Ausführung in Plug-Ins und Workflow-Aktivitäten

Kategorie: Entwurf, Leistung, Sicherheit, Unterstützbarkeit

Wirkungspotential: Hoch

Symptome

Multithreading oder parallele Aufrufe in Plug-Ins oder benutzerdefinierten Workflowaktivitäten können diese Verbindungen beschädigen. Beispielsweise kann die Ausführung von parallelen Threads Ausnahmen protokollieren, beispielsweise:

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

Außerdem können nicht threadsichere Objekte wie Elemente im System.Collections-Namespace durch parallele Threads beschädigt werden.

Anleitung

Der Sandboxdienst wurde konzipiert, um Aufrufe in einer bestimmten Reihenfolge als Bestandteil der Transaktion auszuführen. Die Entwicklung von Plug-Ins oder benutzerdefinierten Workflowaktivitäten für parallele oder Multithread-Aufrufe wird nicht unterstützt. Berücksichtigen Sie bei der Entwicklung von Plug-Ins und benutzerdefinierten Workflowaktivitäten, dass Aufrufe sequenziell ausgeführt werden und möglicherweise ein Rollback ausgeführt werden muss.

Hinweis

Das Verwenden der parallelen Ausführung über ein Clientprogramm ist eine unterstützte Methode, um die Leistung nach Bedarf zu optimieren. Diese Anleitung ist speziell für Code, der erstellt wird, um in einem Plug-In oder einer benutzerdefinierten Workflowaktivität ausgeführt zu werden.

Problematische Muster

Plug-Ins und benutzerdefinierte Workflowaktivitäten werden in einer einzelnen Transaktion ausgeführt und mehreren Threads, die von parallelen Ausführen eingeführt werden, können die Transaktion beschädigten. Nachfolgend sehen Sie Beispiele von Mustern und Methoden, die nicht in Plug-Ins und benutzerdefinierten Workflowaktivitäten verwendet werden sollten:

Weitere Informationen

Die Verwendung und Aktualisierung von freigegebenen Pipelinekontextobjekten kann dazu führen, dass diese Objekte unerwartete Ergebnisse enthalten oder beschädigt werden. Die Auswirkung davon kann ein Fehler im Plug-In oder einer benutzerdefinierten Workflowaktivität sein.

Siehe auch

Parallelverarbeitung, Parallelität und asynchrone Programmierung in .NET

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).