.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 }
好的,现在,缓存如何用于位图图像?
- 位图图像何时被"缓存"? 是只缓存下载的(例如"绝对"图像)还是本地图像(
- 例如"相对"图像)?
- 何时/多久刷新一次缓存?
- 这是否意味着我不需要担心在我的 Windows Phone 项目中手动缓存独立存储中的映像?
最后,何时引发 ImageOpened 和 ImageFailed 事件?
- 它们是否仅在下载位图图像时引发?
- 还是在从缓存中加载 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();