Task< PixelData > を返すメソッドがあります。
myObject.pixelData = await rootPage.GrabPixelData("mypic.png");
メソッドが完了する (そして null 以外の値を返す) ことを (デバッガーから) 確認しましたが、実行が返されたときに myObject.pixelData は null のままです。
不思議なことに、そのポイントの直後の行にヒットすることはありません (そこに設定したブレークポイントが実行を停止することはありません)。
クラスは次のとおりです。
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 クラスの特定のインターフェイスから継承する必要がありますか? 結果を別の型にキャストする必要がありますか? 次の行が実行されないのはなぜですか?