Problem mit MemoryStream

JK_net

Erfahrenes Mitglied
Hallo!

Ich habe in meiner Anwendung eine Variable (memStream) vom Typ MemoryStream deklariert, dieser möchte ich in einer Methode einen Stream zuweisen, und in einer anderen Methode wieder öffnen.
Obwohl ich "memStream" nicht schließe, bekomme ich immer wieder eine Exception:
'Additional information: Cannot access a closed Stream.'
wenn ich darauf zu greifen möchte.

Der Fehler tritt in folgendem Abschnitt in der 1. Zeile auf:

Code:
byte[] img = new byte[this.memStream.Length]; 
memStream.Read(img, 0, Convert.ToInt32(memStream.Length));

Kann mir dabei jemand behilflich sein?

Vielen Dank im Voraus!

MfG
Jens
 

JK_net

Erfahrenes Mitglied
Hi!

So habe ich ihn initialisiert:

Code:
MemoryStream memStream = new MemoryStream();

Ich habe festgestellt, dass ich den zu kopierenden Stream in der Methode (stream) schließe.
Das habe ich erstmal rausgenommen.

Jetzt ist das Problem aufgetaucht, das ich den Stream in ein Byte-Array schreiben wollte. Dabei erstelle ich zwar ein Array mit der richtigen Länge, jedoch stehen keine Daten da drin.

Vielleicht nochmal als Hintergrund:
Ursprünglich habe ich versucht mit folgendem Code:

Code:
MemoryStream stream = new MemoryStream(); 
this.picImage.Image.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
byte[] img = new byte[stream.Length];
stream.Read(img, 0, Convert.ToInt32(stream.Length));

Das Bild einer PictureBox als Byte-Array zu speichern, jedoch blieben auch dort die einzelen Felder des Arrays leer (0).
 

Norbert Eder

Erfahrenes Mitglied
Code:
Image img = this.pictureBox1.Image;
if (img != null) 
{
	MemoryStream memStream  = new MemoryStream();
	img.Save(memStream, System.Drawing.Imaging.ImageFormat.Jpeg);
	if (memStream.Length > 0) 
	{
		byte[] muh = memStream.ToArray();
		
		string test = System.Text.Encoding.ASCII.GetString(muh,0,muh.Length);
		Console.WriteLine(test);
					
	}
}