44 votes

Erreur « L'objet peut être supprimé plusieurs fois »

Lorsque j'exécute une analyse de code sur le morceau de code suivant, j'obtiens ce message :

L'objet 'stream' peut être supprimé plusieurs fois dans la méthode 'upload.Page_Load(object, EventArgs)'. Pour éviter de générer une System.ObjectDisposedException, vous ne devez pas appeler Dispose plus d'une fois sur un objet.

 using(var stream = File.Open(newFilename, FileMode.CreateNew))
using(var reader = new BinaryReader(file.InputStream))
using(var writer = new BinaryWriter(stream))
{
    var chunk = new byte[ChunkSize];
    Int32 count;
    while((count = reader.Read(chunk, 0, ChunkSize)) > 0)
    {
        writer.Write(chunk, 0, count);
    }
}

Je ne comprends pas pourquoi il peut être appelé deux fois et comment le corriger pour éliminer l'erreur. De l'aide?

9voto

Dismissile Points 12054

Le BinaryReader/BinaryWriter supprimera le flux sous-jacent pour vous lors de sa suppression. Vous n'avez pas besoin de le faire explicitement.

Pour résoudre ce problème, vous pouvez supprimer l'utilisation autour du flux lui-même.

6voto

Aliostad Points 47792

Votre écrivain disposera toujours de votre flux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X