gpt4 book ai didi

windows-phone-7 - 尝试绑定(bind)独立存储镜像时应用程序崩溃

转载 作者:行者123 更新时间:2023-12-04 08:55:45 26 4
gpt4 key购买 nike

在我的应用程序中,我使用下面提到的帮助方法将我的独立存储图像绑定(bind)到图像控件。我从链接“Binding Image stored in the Isolated Storage to Image Control in Windows Phone”中获得了这个辅助方法

public class IsoStoreImageSource : DependencyObject
{
public static void SetIsoStoreFileName(UIElement element, string value)
{
element.SetValue(IsoStoreFileNameProperty, value);
}
public static string GetIsoStoreFileName(UIElement element)
{
return (string)element.GetValue(IsoStoreFileNameProperty);
}

// Using a DependencyProperty as the backing store for IsoStoreFileName. This enables animation, styling, binding, etc...
public static readonly DependencyProperty IsoStoreFileNameProperty =
DependencyProperty.RegisterAttached("IsoStoreFileName", typeof(string), typeof(IsoStoreImageSource), new PropertyMetadata("", Changed));

private static void Changed(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
Image img = d as Image;

if (img != null)
{
var path = e.NewValue as string;
SynchronizationContext uiThread = SynchronizationContext.Current;

Task.Factory.StartNew(() =>
{
using (var isoStore = IsolatedStorageFile.GetUserStoreForApplication())
{
if (isoStore.FileExists(path))
{
var stream = isoStore.OpenFile(path, System.IO.FileMode.Open, FileAccess.Read);
uiThread.Post(_ =>
{
var _img = new BitmapImage();
_img.SetSource(stream);
img.Source = _img;
}, null);
}
}
});
}
}

}

我在 ListBox 控件中使用它。如果尝试使用默认库图像,一切都会按预期工作。但是,如果我尝试使用大尺寸的图像(通过设备相机拍摄),应用程序就会崩溃。

这是我得到的异常(exception)

System.Windows.ni.dll 中出现“System.OutOfMemoryException”类型的异常,但未在用户代码中处理

堆栈跟踪

在 MS.Internal.FrameworkCallbacks.NotifyManagedDebuggerOnNativeOOM()
在 MS.Internal.XcpImports.BitmapSource_SetSource(BitmapSource bitmapSource, CValue& byteStream)
在 System.Windows.Media.Imaging.BitmapSource.SetSourceInternal(流流源)
在 System.Windows.Media.Imaging.BitmapImage.SetSourceInternal(流流源)
在 System.Windows.Media.Imaging.BitmapSource.SetSource(流流源)
在 MyaPP.Common.IsoStoreImageSource.<>c__DisplayClass4.<>c__DisplayClass6.b__1(Object _)

最佳答案

ListBox 中的缓存可能会占用您的内存,这对于较大的图像尤其明显。我不熟悉您发布的辅助方法,但尝试添加它。

if (img != null)
{
BitmapImage bitmapImage = img.Source as BitmapImage;
bitmapImage.UriSource = null;
img.Source = null;

//rest of the code ...
}

关于windows-phone-7 - 尝试绑定(bind)独立存储镜像时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16146906/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com