2013-02-28 42 views
2

空例外所以我有這樣的方法在這裏:有沒有空值

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]; 
    } 

調試器說:「測試」包含類型PixelData取出的對象(與真正的,非靜態值)。

當它返回給調用方法,但是,它說,有上線一個空引用異常:

private async void LoadPic() 
    { 
     myObject.pixelData = await rootPage.GrabPixelData("obj1.png"); 
    } 

MyObject來不爲空或者(根據調試器)...

是否返回任務?

編輯:

ImageDictionary is Dictionary。

+0

請問你給ImageDictionary的定義 – Popeye 2013-02-28 04:15:09

+2

你在這裏的代碼片段不能編譯,因爲你不能等待void返回,並且因爲你調用的LoadPic方法不接受任何參數,以及你將這個值分配給一個'PixelData'。你有沒有顯示LoadPic方法的另一個重載? – 2013-02-28 04:25:16

+0

@Preston:對不起,我很困惑。我調用GrabPixelData的loadPic()方法在另一個類中,並且不帶任何參數。我意識到這有點令人困惑。到目前爲止,我試圖通過添加方法來導航異步事物,所以有很多重複名稱:( – micahhoover 2013-02-28 12:27:36

回答

1

更改LoadPic函數返回Task

private async Task LoadPic() 
{ 
    myObject.pixelData = await rootPage.GrabPixelData("obj1.png"); 
} 
0

你的方法GrabPixelData顯然返回Task<PixelData>實例,而不是PixelData。 所以是的,你的猜測是正確的,它返回一個Task實例。