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