6

我正在阅读我的 WPF 图像源,如下所示:

VB

Dim bmi As BitmapImage = New BitmapImage
bmi.BeginInit
bmi.CacheOption = BitmapCacheOption.None
bmi.CreateOptions = BitmapCreateOptions.IgnoreImageCache
bmi.UriSource = New Uri(input.FullName, UriKind.Absolute)
bmi.EndInit

C#

BitmapImage bmi = new BitmapImage();
bmi.BeginInit();
bmi.CacheOption = BitmapCacheOption.None;
bmi.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
bmi.UriSource = new Uri(input.FullName,  UriKind.Absolute);
bmi.EndInit();

到目前为止,它的工作方式应该如此。但是用户可以通过复制文件来更新图像。然后我想刷新图像。但是文件“MyFileName”被锁定,当我想要覆盖它时,它会抛出一个错误,它已经在使用并被锁定。

但是等等,我在这里搜索了一个解决方案,我得到了它:

bmi.cachoption = OnLoad

是关键......但是!现在,图像始终是旧图像,不会更新到新文件。如何清除此缓存?

在 VB.Net 中,我从流中制作了一个 System.Drawing.Bitmap。如何在 WPF 中做到最好?

问候

4

1 回答 1

9

dlev 有一个很好的建议。在这里您可以看到应该解决它的缓存选项:Problems overwriting (re-saving) image when it was set as image source

imgTemp.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
于 2011-08-19T13:18:28.013 回答