views:

408

answers:

1

I have a memorystream in a silverlight app. I have to copy this memorystream to a filestream object. If I call:

memoryStream.Position = 0;
memoryStream.Seek(0,SeekOrigin.Begin);

It does not work, I debug the application, check the properties of the memorystream, and the position still points to the end of the file. Any clues?

+1  A: 

Is it possible that another of your properties is being triggered in the debugger, and reading through the stream?

Rather than using the debugger, what happens if you log (or show on a message box):

Log("Position = " + stream.Position);
stream.Position = 0;
Log("Position = " + stream.Position);

Does that show the same non-zero number twice? I find it hard to believe that MemoryStream is that broken.

Btw, a simpler way of using MemoryStream for copying than manually copying everything is to call WriteTo with the FileStream as an argument.

Jon Skeet
Even without the debugger, It does not work, because I try to iterate through the bytes of the memory stream, and the for loop does not work, as the pointer is at the end of the file
VolkanUzun
@VolkanUzun: Have you tried the logging I've shown? Does it even show a non-zero position beforehand? Could you show a short but complete example demonstrating the problem, e.g. one to just write out a few random bytes?
Jon Skeet