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

时间:2014-04-05 02:28:41

标签: c# .net windows-phone-8 download bitmapimage

我对这堂课有点困惑,我希望有人可以解释一下。 我知道下载时取决于图片的BitmapCreateOptions

但是,当您创建绝对BitmapImage时,请说:

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

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

如果你这样做:

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

设置BitmapCreateOptions后会立即开始下载图像吗? 如果是这样,那么这有相同的行为,对吗?

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

好的,现在,缓存如何为BitmapImage工作?

  1. BitmapImage什么时候“缓存”?
  2. 仅下载例如“绝对”图像被缓存或本地例如“相对”的图像也是?
  3. 缓存何时/多久刷新一次?
  4. 这是否意味着我不需要担心在我的Windows Phone项目的隔离存储中手动缓存图像?
  5. 最后,什么时候ImageOpenedImageFailed事件会被提升?

    1. 只有在下载BitmapImage后才会被提升吗?
    2. 或者从缓存中加载BitmapImage时是否会引发它们?
    3. 或者当他们在屏幕上呈现时?

1 个答案:

答案 0 :(得分:1)

我知道这已经过了几个月但是为了记录,下载发生在调用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();