CA2003: Fibers nicht als Threads behandeln.
Element | Wert |
---|---|
RuleId | CA2003 |
Category | Microsoft.Reliability |
Unterbrechende Änderung | Nicht unterbrechend |
Ursache
Ein verwalteter Thread wird als Win32-Thread behandelt.
Hinweis
Diese Regel wurde als veraltet markiert. Weitere Informationen finden Sie unter Veraltete Regeln.
Regelbeschreibung
Gehen Sie nicht davon aus, dass ein verwalteter Thread ein Win32-Thread ist. Ein verwalteter Thread ist eine Fiber. Die Common Language Runtime (CLR) führt verwaltete Threads als Fibers im Kontext von echten Threads im Besitz von SQL aus. Diese Threads können für Anwendungsdomänen und sogar Datenbanken im SQL Server-Prozess freigegeben werden. Die Verwendung von verwaltetem threadlokalem Speicher ist möglich, jedoch können Sie keinen nicht verwalteten threadlokalen Speicher verwenden. Sie können auch nicht davon ausgehen, dass Ihr Code erneut im aktuellen Betriebssystemthread ausgeführt wird. Ändern Sie keine Einstellungen, z. B. das Gebietsschema des Threads. CreateCriticalSection oder CreateMutex erfordern, dass der gesperrte Thread auch wieder entsperrt wird. Rufen Sie sie daher nicht über P/Invoke auf. Da der gesperrte Thread bei der Verwendung von Fibers nicht entsperrt wird, sind kritische Win32-Abschnitte und Win32-Mutexe in SQL nutzlos. Sie können die meisten Zustände eines verwalteten Thread-Objekts (einschließlich des verwalteten threadlokalen Speichers und der aktuellen Benutzeroberflächenkultur des Threads) sicher verwenden. Aufgrund des Programmiermodells können Sie die aktuelle Kultur eines Threads jedoch nicht ändern, wenn Sie SQL verwenden. Diese Einschränkung wird durch eine neue Berechtigung erzwungen.
Behandeln von Verstößen
Untersuchen Sie die Verwendung von Threads, und ändern Sie Ihren Code entsprechend.
Wann sollten Warnungen unterdrückt werden?
Unterdrücken Sie diese Regel nicht.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für