我尝试从网站下载图片并将其作为WP8上图块的背景。在OnInvoke()方法的后台代理中,我有以下几行将该图像下载到BitmapImage对象中:
static BitmapImage img;
protected override void OnInvoke(ScheduledTask task)
{
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
img = new BitmapImage(new Uri(imgLoc, UriKind.Absolute));
img.ImageOpened += img_ImageOpened;
});
}
然而,当我单步执行代码时,我从未点击过img_ImageOpened事件
void img_ImageOpened(object sender, RoutedEventArgs e)
{
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
Image uiImage = new Image();
uiImage.Source = img;
CreateNewHubTile(uiImage);
});
}
URI是正确的,我能够步入OnInvoke()方法的Deployment.Current.Dispatcher.BeginInvoke(())...,它只是BitmapImage的事件没有被召唤。
我尝试过搜索谷歌的东西,但我似乎没有使用正确的关键词......任何帮助都将不胜感激。
答案 0 :(得分:0)
您需要做的是禁用延迟创建BitmapImage,这可以通过将CreateOptions设置为None来完成,如下所示:
protected override void OnInvoke(ScheduledTask task)
{
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
img = new BitmapImage(new Uri(imgLoc, UriKind.Absolute));
img.CreateOptions = BitmapCreateOptions.None;
img.ImageOpened += img_ImageOpened;
});
}
此外,如果你有一个NotifyComplete()调用,请确保在收到你的活动之前不会调用它。