Я загружаю изображения пользователей с помощью Silverlight 3.
Все работает нормально, и я могу установить поток файлов на BitmapImage
, и он будет обработан в порядке.
Проблема заключается в том, что, если я пытаюсь загрузить что-то, что не является изображением (например, .exe, который был переименован в .png), Silverlight аварийно завершает работу с System.Exception
, который говорит "Катастрофический сбой".
Документация MSDN бесполезно говорит, что так должно быть msdn link , и я должен прослушать событие 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
}
}