___ tag123c ___ C # (sprich "Cis") ist eine objektorientierte Programmiersprache auf hohem Niveau, die für die Erstellung einer Vielzahl von Anwendungen entwickelt wurde, die auf dem .NET Framework (oder .NET Core) ausgeführt werden. C # ist einfach, leistungsfähig, typsicher und objektorientiert.
___ tag123stresstests ___ Stresstests sind Testverfahren, mit denen die Stabilität eines bestimmten Systems oder einer Entität bestimmt wird. Es beinhaltet das Testen über die normale Betriebsfähigkeit hinaus, oft bis zum Bruch, um die Ergebnisse zu beobachten.
___ qstnhdr ___ Warum schlägt SHA1.ComputeHash bei hoher Auslastung mit vielen Threads fehl?
___ tag123finalizer ___ Ein Finalizer ist eine spezielle Methode in einer objektorientierten Sprache, die ausgeführt wird, wenn ein Objekt als Garbage Collection erfasst wird.
___ answer26592826 ___
Gemäß der Dokumentation für die Basisklasse %code%
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 %code% 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:
- System.Security.Cryptography.CryptographicException: Der Hash ist für die Verwendung im angegebenen Status nicht gültig.
- System.ObjectDisposedException: Sicheres Handle wurde geschlossen
Stresstest-Codebeispiel:
%Vor%
___ tag123sha ___ SHA (Secure Hash Algorithm) ist eine Familie von Digest-Algorithmen (d. h. kryptografische Hashes), d.h. Prüfsummenfunktionen, die schwer zu fälschen sind. Die empfohlenen Digest-Algorithmen sind heutzutage SHA-1 und SHA-2 (die sowohl SHA-256 als auch SHA-512 abdecken). MD5 ist eine veraltete Alternative.
___ qstntxt ___
Ich sehe ein Problem mit einem von mir gepflegten Code. Der folgende Code hat ein %code% -Member (was ein %code% ist, aber da es %code% ist, sollte es niemals finalisiert werden). Unter Stress löst dieser Code jedoch eine Ausnahme aus, die darauf hinweist, dass er geschlossen wurde:
%Vor%
Der fragliche Code lautet:
%Vor%
Meine Frage ist offensichtlich, was dieses Problem verursachen könnte. Kann der Aufruf von %code% automatisch fehlschlagen (wie viele kryptografische Ressourcen sind verfügbar)? Könnte dies durch das Herunterfahren der Anwendungsdomäne verursacht werden?
Irgendwelche anderen Theorien?
___