2016-10-23 13 views
0

MemoryStreamを使用してイメージをバイトに変換すると、このエラーが発生します。 最初はうまくいきましたが、3回目と4回目にこのエラーが発生します。保護されたメモリを読み書きしようとしました。これはしばしば、他のメモリが壊れていることを示します。 MemoryStreamエラー

Public Function getImgByte() As Byte() 'Convert image to array bytes 
    Dim arrImg() As Byte 
    ms2 = New MemoryStream() 
    editStudentPicbox.Image.Save(ms2, System.Drawing.Imaging.ImageFormat.Jpeg) ' Use appropriate format here 
    arrImg = ms2.ToArray() 
    ms2.Close() 
    Return arrImg 
End Function 

答えて

0

メモリストリームは閉じていますが、メモリからは削除されません。 Using節を使用することをお勧めします。

Public Function getImgByte() As Byte() 'Convert image to array bytes 
    Using ms2 as New MemoryStream() 
     editStudentPicbox.Image.Save(ms2, System.Drawing.Imaging.ImageFormat.Jpeg) ' Use appropriate format here 
     Return ms2.ToArray() 
    End Using 
End Function 

をそれともms2.Close()の後にms2.Disposeを()を追加しますが、この機能では、MS2を毎回宣言する必要があります。次のコードを試してみてください。

Dim ms2 as MemoryStream = New MemoryStream() 
+0

このエラーの他の理由はありますか?初めて正常に動作していましたが、2回目か4回目にエラーが発生しました – Jayson

+0

値を返す前にms2.Dispose()を追加してみてください – Hadi

+0

私の答えを編集しました。見てみましょう – Hadi

関連する問題