Udostępnij za pośrednictwem


CA2003: Nie traktuj włókien jako wątków

TypeName

DoNotTreatFibersAsThreads

CheckId

CA2003

Kategoria

Microsoft.Reliability

Zmiana kluczowa

Niekluczowa

Przyczyna

Zarządzalny wątek jest traktowany jako wątek Win32.

Opis reguły

Nie należy zakładać, że zarządzany wątek jest wątkiem Win32.Jest włóknem (wątkiem lekkim).Common language runtime (CLR) będzie uruchamiać wątki zarządzane jako włókna (wątki lekkie) w kontekście rzeczywistych wątków, które są własnością SQL.Wątki te mogą być współużytkowane między domenami AppDomains a nawet bazami danych w procesach SQL Server.Używanie magazynu lokalnego zarządzanych wątków będzie działać, ale nie można używać lokalnego magazynu wątków niezarządzanych lub zakładać, że kod będzie ponownie uruchomiony na bieżącym wątku OS.Nie należy zmieniać ustawień, takich jak element locale wątku.Nie należy wywoływać CreateCriticalSection lub CreateMutex przez P/Invoke, ponieważ wymagają one, aby wątek, który wprowadza blokadę także ją zamykał.Ponieważ nie będzie tak w przypadku użycia włókien, sekcje krytyczne Win32 i Muteksy będą bezużyteczne w SQL.Można bezpiecznie korzystać z większości stanu na zarządzanym obiekcie System.Thread.Obejmuje to lokalny magazyn wątków zarządzanych i bieżącą kulturę wątku interfejsu użytkownika.Jednakże z przyczyn modelu programowania, nie będzie można zmienić bieżącej kultury wątku przy użyciu SQL; będzie to wykonywane poprzez nowe uprawnienie.

Jak naprawić naruszenia

Należy zbadać użycie wątków i odpowiednio zmienić kod.

Kiedy pominąć ostrzeżenia

Nie należy pomijać tej reguły.