将图像添加到listview以使用WPF显示时获取异常

时间:2014-12-30 07:16:39

标签: c# wpf listview

我一直在研究wpf制作图像滑块。 我使用ListView来显示图像列表,使用图像控制器来预览它。 一切正常但是当我加载超过100的图像时,我得到一个未处理的异常,如(线程当前不... Stack等)类似的东西,我不记得它。 加载一百多张图像会使WPF应用程序在PC上越来越慢。 所以请帮助我如何克服这个问题谢谢。

1 个答案:

答案 0 :(得分:0)

加载大量图像时应使用Thread或Dispatcher。您也可以使用BackgroundWorker进行异步加载。

  public LoadImages()
    {
   BackgroundWorker BWorker = new BackgroundWorker();
        BWorker.DoWork += new DoWorkEventHandler(BWorker_DoWork);
        BWorker.RunWorkerCompleted += 
            new RunWorkerCompletedEventHandler(BWorker_RunWorkerCompleted);
        BWorker.RunWorkerAsync();
  }

   void BWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        BitmapSource bitmap = e.Result as BitmapSource;
            Dispatcher.BeginInvoke(DispatcherPriority.Normal 
                (ThreadStart)delegate()
            {
                Image image = new Image();
                image.Source = bitmap;
                background.Child = image;
             });
    }

    void BWorker_DoWork(object sender, DoWorkEventArgs e)
    {
        BitmapSource bitmapSource = IMAGEFROMFILE;
        e.Result = bitmapSource;
     }

您也可以使用BitmapDecoder获取高度和宽度,以减小加载时的大小。