Aufruf von ListT.Clear () verursacht IndexOutOfRangeException

8

Ich habe ein List<T> in einer Entitätsklasse, die über NHibernate gefüllt wird. Wenn ich .Clear() auf dieser Liste anrufe, erhalte ich IndexOutOfRangeException .

Ich habe überprüft, dass diese Liste Elemente enthält, bevor diese aufgerufen wird, aber die gleiche Ausnahme wird ausgelöst.

Unter welchen Umständen erwarten Sie diese Ausnahme, wenn Sie diese Methode aufrufen?

%Vor%

Bearbeiten:

Das Verrückte daran ist, dass ich selbst nach dem Auslösen der Ausnahme und dem Brechen des Debuggers das Objekt im unmittelbaren Fenster abfragen kann und bestätigen kann, dass die Methode Count () den Wert 5 zurückgibt!

    
starskythehutch 22.02.2012, 10:50
quelle

2 Antworten

7

Ein typischer Fall ist, wenn mehrere Threads auf dieselbe Liste zugreifen.

Wenn ein Thread ein Element löscht, während die Liste von einem anderen Thread gelöscht wird, kann diese Ausnahme ausgelöst werden.

Denken Sie daran, dass die Klasse List<T> nicht threadsicher ist.

    
ken2k 22.02.2012, 10:54
quelle
0

Wenn Sie Threads verwenden, sperren Sie bitte den Aufruf der Methode Clear() .

%Vor%     
Guilherme Oliveira 22.02.2012 11:04
quelle

Tags und Links