[Daily Issue] MemoryStream e position

Ho avuto un problema banale qualche giorno fa: il classico "il metodo funziona se lo chiamo da qui, se lo chiamo da quà invece el va no".
Il metodo in questione salvava un array di byte su un blob a partire da uno stream. In particolare, quando questo stream partiva direttamente da un FileUpload control prendendo lo stream FileContent andava tutto alla perfezione, se invece mi creavo un MemoryStream a partire da un file su FileSystem e lo passavo al metodo, nulla....

Dopo qualche prova, mi sono accorto che costruivo il memoryStream col metodo Save (nel mio caso, di un oggetto image) passandogli come primo parametro il mio memoryStream, e poi lo passavo così com'era al metodo.

Peccato che il memoryStream in questo modo rimanesse posizionato alla fine! Quindi io mi costruivo un array di byte grande quanto lo stream, e poi ciclavo i byte dello stream, che continuava a restituirmi 0 essendo posizionato alla fine.

Morale della favola: quando lavorate con gli stream, controllate sempre se questo è all'inizio, alla fine e se potete navigarci! Nel mio caso, è bastato mettere un bel controllo sulla posizione e nel caso resettarla, per risolvere il problema!

2 Comments Filed Under [ Weekly Issues ]

Comments

# re: [Daily Issue] MemoryStream e position
Gravatar Magari sarò io strano, ma non è molto più semplice, se è il caso, salvare la posizione, reimpostarla a zero, e poi ripristinarla alla fine?

Ciao,

Andrea
Left by Andrea Raimondi on 16/05/2007 19.48
# re: [Daily Issue] MemoryStream e position
Gravatar sei strano te :)
No va beh seriamente, il mio era un esempio nel caso particolare in cui devi fare il passaggio... ovvio che a me non serviva reimpostare la posizione a quella iniziale!
Era solo un avviso di stare attenti che se ci si trova con il flusso improvvisamente "svuotato" meglio controllare la posizione dello stream :)
Left by Alessandro Ghizzardi on 16/05/2007 20.04

Leave Your Comment

Title*
Name*
Email (never displayed)
 (will show your gravatar)
Url
Comment*

Please add 3 and 2 and type the answer here:

Preview Your Comment.