MemoryStream.Position или MemoryStream.Seek не работает (Silverlight)

У меня есть поток памяти в приложении Silverlight. Я должен скопировать этот поток памяти в объект файлового потока. Если я позвоню:

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

Не работает, отлаживаю приложение, проверяю свойства memorystream, а позиция все равно указывает на конец файла. Любые подсказки?


person VolkanUzun    schedule 14.12.2009    source источник


Ответы (1)


Возможно ли, что другое из ваших свойств запускается в отладчике и считывается через поток?

Вместо использования отладчика, что произойдет, если вы войдете (или покажете в окне сообщения):

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

Это показывает одно и то же ненулевое число дважды? Мне трудно поверить, что MemoryStream настолько сломан.

Кстати, более простой способ использовать MemoryStream для копирования, чем вручную копирование всего, — это вызвать WriteTo с FileStream в качестве аргумента.

person Jon Skeet    schedule 14.12.2009
comment
Даже без отладчика не работает, т.к. пытаюсь перебрать байты потока памяти, а цикл for не работает, так как указатель находится в конце файла - person VolkanUzun; 14.12.2009
comment
@VolkanUzun: Вы пробовали ведение журнала, которое я показал? Показывает ли он заранее ненулевую позицию? Не могли бы вы показать короткий, но полный пример, демонстрирующий проблему, например. один, чтобы просто записать несколько случайных байтов? - person Jon Skeet; 14.12.2009