我有一个返回Task<的方法PixelData>。
myObject.pixelData = await rootPage.GrabPixelData("mypic.png");
我已经确认(来自调试器)该方法完成(并返回一个非空值),但是当执行返回myObject时,pixelData仍为null。
Stangely,紧接在该点之后的线永远不会被击中(我设置的断点永远不会停止执行)。
这是班级:
public class PixelData
{
public byte[] sourcePixels;
public int sizeOfSourcePixels;
public int imageWidth;
public int imageHeight;
}
以下是被调用的方法:
public async Task<PixelData> GrabPixelData(string imageFileName)
{
if (!ImageDictionary.ContainsKey(imageFileName))
{
// doesn't exist yet, so load it
PixelData pd = await LoadPic(imageFileName);
ImageDictionary.Add(imageFileName, pd);
}
var test = ImageDictionary[imageFileName];
return ImageDictionary[imageFileName];
}
我是async / await的新手,我似乎无法想出这个。
我是否需要继承PixelData类中的某个接口?我需要将结果转换为其他类型吗?为什么下一行不会被执行?
答案 0 :(得分:0)
我强烈怀疑原因是.NET 4.5的一些隐藏的,神秘的方面,或者它是一个错误。
无论如何,我的解决方法是进行异步调用以将文件加载到父类中,然后在下一行中获取它。
这样的事情:
await rootPage.LoadPixelData("mypic.png");
myobject.pixelData = rootPage.ImageDictionary["mypic.png"];
loadedFlag = true;
我的班级布局是否有点强类型?是。那是因为每次切换页面时XAML都会清除我的类,所以我必须将所有内容存储在父类中以避免重新加载。