任务加载图像 [英] Task loading an image
问题描述
我有一个名为Cameleon.png的图像,位于Assert文件夹中。
int我的MainPage_Loaded函数我写的是这样的东西
< pre lang =C#> void MainPage_Loaded( object sender,RoutedEventArgs e)
{
任务< writeablebitmap> imtask = GetImage();
imtask.ContinueWith(t = >
{
WriteableBitmap writeableBmp = t.Result;
ImageName.Source = writeableBmp;
});
}
async 任务< writeablebitmap> GetImage()
{
string strImageName = string .Format( ms-appx:///Assets/Cameleon.png);
Uri uri = new Uri(strImageName);
WriteableBitmap bitMap = await new WriteableBitmap( 1 , 1 )。FromContent(uri);
// ImageName.Source = bitMap;
return bitMap;我的XAML文件中的
}
< 画布 >
Image Canvas.Left =0画布.Top =0x:Name =ImageName
< / Canvas < span class =code-keyword>>
如果我设置ImageName.Source = bitMap;在我的任务函数中它显示图像,但如果在我的MainPage_Loaded函数中设置它不显示。
我做错了什么?
你的帮助非常适合。
祝你好运
Agha Khan
这是非常不寻常的行为,但有一个解决方案。 ContinueWith调用需要一个额外的参数。
imtask.ContinueWith(t =>
{
if(t.IsFaulted == false)
{
WriteableBitmap writeableBmp = t.Result;
myImage.Source = writeableBmp;
}
},TaskScheduler.FromCurrentSynchronizationContext());
现在它正常工作。
I have an image called Cameleon.png sitting in Assert Folder.
int my MainPage_Loaded function I write something like this
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
Task<writeablebitmap> imtask = GetImage();
imtask.ContinueWith(t =>
{
WriteableBitmap writeableBmp = t.Result;
ImageName.Source = writeableBmp;
});
}
async Task<writeablebitmap> GetImage()
{
string strImageName = string.Format("ms-appx:///Assets/Cameleon.png");
Uri uri = new Uri(strImageName);
WriteableBitmap bitMap = await new WriteableBitmap(1, 1).FromContent(uri);
// ImageName.Source = bitMap;
return bitMap;
}
in my XAML file
<Canvas>
Image Canvas.Left="0" Canvas.Top="0" x:Name="ImageName"
</Canvas>
If I set ImageName.Source = bitMap; in my Task function it show the image, but if set in my MainPage_Loaded function it does NOT show.
What I am doing wrong?
Your help will be very much appriciated.
Best regards
Agha Khan
This is very unusual behavior, but there is a solution. There is need an extra parameter for ContinueWith call.
imtask.ContinueWith(t =>
{
if (t.IsFaulted == false)
{
WriteableBitmap writeableBmp = t.Result;
myImage.Source = writeableBmp;
}
}, TaskScheduler.FromCurrentSynchronizationContext());
Now it works fine.
这篇关于任务加载图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!