Was passiert, wenn ich Dispose () vor dem Ende der Anweisung aufgerufen habe?

8

Ich habe diesen Code, ich bin besorgt, dass es "nicht sicher" ist Ich habe Dispose () vor der Verwendung der Anweisung verwendet, für mich ist es etwas unlogisch, aber es funktioniert gut. Also, ist es sicher?

%Vor%     
Imad Nabil Alnatsheh 11.08.2013, 18:41
quelle

2 Antworten

14

Die Dokumentation für IDisposable.Dispose lautet:

  

Wenn die Dispose-Methode eines Objekts mehr als einmal aufgerufen wird, muss das Objekt alle Aufrufe nach dem ersten ignorieren. Das Objekt darf keine Ausnahme auslösen, wenn seine Dispose-Methode mehrmals aufgerufen wird. Instanzmethoden außer Dispose können eine ObjectDisposedException auslösen, wenn Ressourcen bereits entsorgt werden.

Wenn IDisposable korrekt implementiert ist, ist diese Verwendung sicher. Dispose wird ein zweites Mal aufgerufen und tut das zweite Mal nicht.

    
hvd 11.08.2013, 18:42
quelle
1

Nun, wie von @hvd gesagt, dass diese Verwendung sicher ist; Es wird jedoch nicht empfohlen, wenn Sie Microsoft Fxcop in Ihrem Codebeispiel implementieren, wird eine Fxcop-Warnung / Fehler CA2202: Do not dispose objects multiple times

ausgelöst

Siehe hier

Was sagt

  

Eine Methodenimplementierung enthält Codepfade, die mehrere verursachen können   ruft IDisposable.Dispose oder ein Dispose-Äquivalent auf, z. B. a   Close () -Methode für einige Typen, für dasselbe Objekt.

    
Rahul 11.08.2013 18:49
quelle

Tags und Links