有时(我还没有找到模式)我在尝试将图片保存到媒体库时得到 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)
从流中的位置属性我可以看到它不是 0,所以我假设流的相同部分已经被保存,但是在缓冲更多错误时发生了。它总是发生在大图像(+ 4MB)上,但每次抛出异常时不一定发生在同一张图片上,而且我使用的是相同的图片集合。如果我发现异常并且我尝试再次保存图片而无需再次使用相同的流打开文件(我只需将位置设置为 0)然后保存图片没有任何问题。
有任何想法吗?任何帮助,将不胜感激。