我正在使用C#和WPF进行编程并尝试加载大量图像,但是在大约 5秒之后我得到的是Exceptions,而不是直接抛出(Visual Studio没有'停止程序)并在Visual Studio中记录。
我的代码如下所示:
public Dictionary<string, System.Windows.Media.Imaging.BitmapImage> images { get; private set; }
public MainWindow()
{
images = new Dictionary<string, System.Windows.Media.Imaging.BitmapImage>();
foreach (string file in Directory.GetFiles(@"C:\path\to\thumbnails"))
{
string id = Path.GetFileName(file);
id = id.Substring(0, id.Length - 4);
var image = new System.Windows.Media.Imaging.BitmapImage(new Uri(file));
image.Freeze();
images.Add(id, image);
}
InitializeComponent();
}
文件夹中有超过 8k jpg 的图片, 44 x 64 像素大。运行程序时,我看到Visual Studio中的内存使用情况以及是否存在异常。如前所述,前5秒左右的时间很好,但是接下来的每一张照片我都会得到一个例外情况。很难说,因为它们被抛得太快而且Visual Studio显示它们太慢,所以它们会弹出包装。
当异常开始显示时,内存使用率与之前相比变得非常缓慢,但是如果我让程序完成加载,则可以毫无问题地显示所有图片。它看起来似乎Visual Studio被导致Logger比实时更慢的Exceptions数量所淹没。在Visual Studio中,1秒似乎变成了6个实时秒,并且它们花费了超过一分钟的时间并且#34;假的&#34;秒。
例外情况如下(我来自德国):
Ausnahme ausgelöst: 'System.IO.FileFormatException' in PresentationCore.dll ("Der Bitmap-Farbkontext ist ungültig.")
看起来图片已损坏或有一些错误,但我无法检索文件名,当我在那时,我单独测试了文件并且没关系。
我正在寻找一种以正常速度加载所有图像的方法。
提前致谢!
更新1: 不知怎的,我禁用了“只是我的代码”#34; Visual Studio中的选项,导致在我的代码之外显示异常并减慢Visual Studio的速度。现在它的运行速度与评论中提到的修改速度一样快,加载所有图像大约需要一分钟。
我仍然想知道,是否有办法加快图像加载速度。我正在做的就是展示它们。