我正在使用 Silverlight 3 加载用户图像。一切正常,我可以将文件流设置为 aBitmapImage
并且渲染正常。
问题是,如果我尝试加载不是图像的内容(例如重命名为 .png 的 .exe),Silverlight 会崩溃并System.Exception
显示“灾难性故障”。MSDN 文档无济于事地说它应该有msdn 链接,我应该听该ImageFailed
事件(它永远不会被解雇)。
从流中加载时我是否遗漏了某些内容或库是否损坏?
我从源代码加载图像的代码:
var openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "*.jpg;*.jpeg;*.png|*.jpg;*.jpeg;*.png";
openFileDialog.Multiselect = false;
var showDialog = openFileDialog.ShowDialog();
if (showDialog.HasValue && showDialog.Value)
{
using (var reader = openFileDialog.File.OpenRead())
{
var picture = new BitmapImage();
picture.DownloadProgress += (o, e) => System.Threading.SynchronizationContext.Current.Send((oo) => System.Windows.Browser.HtmlPage.Window.Alert("Download progress: " + e.Progress), null);
picture.ImageFailed += (o, e) => System.Threading.SynchronizationContext.Current.Send((oo) => System.Windows.Browser.HtmlPage.Window.Alert("Image failed: " + e.ErrorException), null);
picture.ImageOpened += (o, e) => System.Threading.SynchronizationContext.Current.Send((oo) => System.Windows.Browser.HtmlPage.Window.Alert("Image opened: " + e.OriginalSource), null);
picture.SetSource(reader); // BANG! here without any of the alerts showing up
}
}