Иногда (я еще не нашел шаблон) я получаю исключение NullReferenceException, когда пытаюсь сохранить изображение в медиа-библиотеке. Проблема в методе SavePicture, я просто использую его.
using (var isoStore = IsolatedStorageFile.GetUserStoreForApplication())
{
if (isoStore.FileExists("fileName"))
{
using (var fileStream = isoStore.OpenFile("fileName", FileMode.Open))
{
MediaLibrary library = new MediaLibrary();
library.SavePicture("name", fileStream);
}
}
}
fileStream, как вы можете видеть из кода IsolatedStorageFileStream, является допустимым, а не нулевым. Это моя трассировка стека
at Microsoft.Xna.Framework.Media.UnsafeNativeMethods.MediaLibrary_SavePicture(String name, Int32 nameLength, UInt32 stream, UInt32& picture)
at Microsoft.Xna.Framework.Media.MediaLibrary.SavePicture(String name, Stream source)
Из свойства Position в потоке я вижу, что это не 0, поэтому я предполагаю, что та же часть потока уже была сохранена, но во время буферизации для большего количества произошло что-то не так. это всегда происходит с большими изображениями (+ 4 МБ), но не обязательно с одним и тем же изображением каждый раз, когда возникает исключение, и я использую одну и ту же коллекцию изображений. Если я поймаю исключение и попытаюсь снова сохранить изображение, не открывая файл снова, только с тем же потоком (мне нужно только установить положение на 0), то изображение сохраняется без проблем.
Любые идеи? Любая помощь будет оценена по достоинству.
NullReferenceException
, как правило, всегда приводят к чему-то простому. Как становится очевидным, этот случай не сразу очевиден. Надеюсь, люди прочитают это и не захотят закрыться :-) - person Adam Houldsworth   schedule 02.04.2014IsolatedStorageFileStream
вMemoryStream
. - person Adam Houldsworth   schedule 02.04.2014