2011-08-08 6 views
1

WPFビットマップイメージの読み込みに失敗したかどうかを確認するにはどうすればよいですか?私は特定のサイズでユーザーに表示するビットマップ画像クラスにファイルからイメージをロードするために、次のコードを使用してい

   BitmapImage resized = new BitmapImage(); 
       FileStream fs = new FileStream(ImageSource, FileMode.Open); 
       MemoryStream ms = new MemoryStream(); 
       fs.CopyTo(ms); 
       fs.Close(); 
       resized.BeginInit(); 
       resized.CacheOption = BitmapCacheOption.OnDemand; 
       resized.DecodePixelHeight = (int)(_imageBaseHeight * zoomRate); 
       resized.DecodePixelWidth = (int)(_imageBaseWidth * zoomRate); 
       resized.StreamSource = ms; 
       resized.EndInit(); 
       ImageDisplay = resized; 

問題であること時々、特に大きな画像に、この意志静かに失敗し、例外を発生させずに空のイメージを表示します。 EndInit()の後に画像がロードされたことを確認できるフラグがありますか?

答えて

3

通知を受けるにはresized.DownloadFailedイベントを使用してください。

+0

ありがとうございました! DecodeFailedで起きているようです。これらのハンドラからユーザにメッセージを表示する方法はありますか?両方ともUIスレッドから発生しているように見えます。 –

+1

@Dan:Dispatcher.BeginInvoke(新しいアクション(()=> {/ *彼女はあなたのアクションがあります* /})、DispatcherPriority.ApplicationIdle); – HCL

0

ImageFailedイベントを使用することもできます。