Почему, когда возникает ArgumentException, поскольку image.jpg имеет недопустимый заголовок метаданных, первый пример перехватывает исключение, а второй - нет?
Пример 1:
try { Uri myUri = new Uri("http://example.com/image.jpg", UriKind.RelativeOrAbsolute); JpegBitmapDecoder decoder2 = new JpegBitmapDecoder(myUri, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default); BitmapSource bitmapSource2 = decoder2.Frames[0]; } catch (Exception ex) { MessageBox.Show(ex.Message); }
Пример 2:
try { BitmapImage src = new BitmapImage(); src.BeginInit(); src.UriSource = new Uri("http://example.com/image.jpg"); src.EndInit(); } catch (Exception ex) { MessageBox.Show(ex.Message); }
Может ожидаться, пока изображение не будет загружено, например, в качестве источника для Image элемента управления.
Image
Возможно, это даст вам исключение, если вы добавите
src.CacheOption = BitmapCacheOption.OnLoad;
к вашим объявлениям.