BitmapFrame in another thread

Posted by Lasse Lindström on Stack Overflow See other posts from Stack Overflow or by Lasse Lindström
Published on 2010-03-18T12:09:43Z Indexed on 2010/03/18 12:11 UTC
Read the original article Hit count: 442

Filed under:
|
|

Hi

I am using a WPF BackgroundWorker to create thumbnails. My worker function looks like:

private void work(object sender, DoWorkEventArgs e) { try { var paths = e.Argument as string[]; var boxList = new List(); foreach (string path in paths) {
if (!string.IsNullOrEmpty(path)) { FileInfo info = new FileInfo(path); if (info.Exists && info.Length > 0) { BitmapImage bi = new BitmapImage(); bi.BeginInit(); bi.DecodePixelWidth = 200; bi.CacheOption = BitmapCacheOption.OnLoad; bi.UriSource = new Uri(info.FullName); bi.EndInit(); var item = new BoxItem(); item.FilePath = path; MemoryStream ms = new MemoryStream(); PngBitmapEncoder encoder = new PngBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(bi));
encoder.Save(ms); item.ThumbNail = ms.ToArray(); ms.Close(); boxList.Add(item); } } } e.Result = boxList; } catch (Exception ex) { //nerver comes here } }

When this fuction is finnished and before the BackgroundWorker "Completed" function is started, I can see on the output window on Vs2008, that a exception is generated. It looks like:

A first chance exception of type 'System.NotSupportedException' occurred in PresentationCore.dll

The number of exceptions generates equals the number of thumbnails to be generated.

Using "trial and error" I have isolated the problem to: BitmapFrame.Create(bi)

Removing that line (makes my function useless) also removes the exception.

I have not found any explanation to this,,, or a better method to create thumbnails i a background thread. Can anyone help me?

//lasse

© Stack Overflow or respective owner

Related posts about wpf

Related posts about bitmapframe