.NET FW BitmapImage 类何时下载/缓存

本文关键字:下载 缓存 何时 FW BitmapImage NET | 更新日期: 2023-09-27 17:56:39

我对这个类有点困惑,我希望有人能有所了解。我知道何时下载取决于图像的位图创建选项。

但是,当您创建绝对位图图像时,请说:

var Image = new BitmapImage(new Uri("http://...", UriKind.Absolute))

它不会立即下载它,因为 DelayCreation 是默认的 BitmapCreateOptions,对吗?

如果您执行以下操作,该怎么办:

var Image = new BitmapImage(new Uri("http://...", UriKind.Absolute))
Image.CreateOptions = BitmapCreateOptions.None;
它会

在您设置其位图创建选项后立即开始下载图像吗?如果是这样,那么这具有相同的行为,对吗?

var Image = new BitmapImage(new Uri("http://...", UriKind.Absolute)) { CreateOptions = BitmapCreateOptions.None }

好的,现在,缓存如何用于位图图像?

  1. 位图图像何时被"缓存"?
  2. 是只缓存下载的(例如"绝对"图像)还是本地图像(
  3. 例如"相对"图像)?
  4. 何时/多久刷新一次缓存?
  5. 这是否意味着我不需要担心在我的 Windows Phone 项目中手动缓存独立存储中的映像?

最后,何时引发 ImageOpened 和 ImageFailed 事件?

  1. 它们是否仅在下载位图图像时引发?
  2. 还是在从缓存中加载 BitmapImage 时引发它们?
  3. 或者当它们在屏幕上呈现时?

.NET FW BitmapImage 类何时下载/缓存

我知道

这已经晚了几个月,但为了记录,下载发生在调用 EndInit 时,丢弃后对属性的任何其他更改。使用默认构造函数以外的构造函数将自动初始化图像。

换句话说:

var Image = new BitmapImage(new Uri("http://...", UriKind.Absolute));
// The image is now intialized and is downloading/downloaded
Image.CreateOptions = BitmapCreateOptions.None; // nothing happens here

如果要设置属性,请像这样手动初始化:

var Image = new BitmapImage();
Image.BeginInit();
Image.UriSource = new Uri("http://...", UriKind.Absolute)
Image.CreateOptions = BitmapCreateOptions.None; // This is default anyway so it won't affect
// ..Setting other properties...
Image.EndInit();