Ich sehe ein Problem mit einem von mir gepflegten Code. Der folgende Code hat ein private static SHA1
-Member (was ein IDisposable
ist, aber da es static
ist, sollte es niemals finalisiert werden). Unter Stress löst dieser Code jedoch eine Ausnahme aus, die darauf hinweist, dass er geschlossen wurde:
Der fragliche Code lautet:
%Vor% Meine Frage ist offensichtlich, was dieses Problem verursachen könnte. Kann der Aufruf von SHA1.Create
automatisch fehlschlagen (wie viele kryptografische Ressourcen sind verfügbar)? Könnte dies durch das Herunterfahren der Anwendungsdomäne verursacht werden?
Irgendwelche anderen Theorien?
Gemäß der Dokumentation für die Basisklasse HashAlgorithm
Alle öffentlichen statischen Member (Shared in Visual Basic) dieses Typs sind threadsicher. Alle Instanzmitglieder sind nicht garantiert threadsicher.
Sie sollten diese Klassen nicht zwischen Threads teilen, bei denen verschiedene Threads gleichzeitig ComputeHash
für dieselbe Instanz aufrufen und aufrufen.
BEARBEITEN Dies verursacht Ihren Fehler. Der folgende Stresstest führt zu einer Reihe von Fehlern, da mehrere Threads ComputeHash für dieselbe Hashalgorithmusinstanz aufrufen. Dein Fehler ist einer von ihnen.
Im Einzelnen habe ich bei diesem Stresstest die folgenden Fehler gesehen:
Stresstest-Codebeispiel:
%Vor%Tags und Links c# stress-testing finalizer sha