2

我的應用程序簡單地調用了Azure Webservice數據庫,並且我想將返回的行復制到新列表中。WP8 IMobileServiceTable - 檢測異步調用的結束

private IMobileServiceTable<dbEntry> entryTable = App.MobileService.GetTable<dbEntry>(); 
private MobileServiceCollectionView<dbEntry> currentEntries; 

currentEntries = (entryTable.Where(ev => ev.event_date.Month == dateToShow.Month) 
      .ToCollectionView()); 

foreach (dbEntry ev in currentEntries) 
{ 
    //insert ev into another List 
} 

的問題是,「哪裏」調用DB是異步的,所以當到達循環的時間有在currentEntries沒有元素呢。

如何檢測呼叫已執行循環前完成?是否有此事件處理程序?

謝謝。

+0

是不是可以使用該entryTable.Where上的await? – robertk

+0

我改寫的代碼和移動的DB調用異步方法和用於等待的呼叫。謝謝。 – user1789509

回答

1

這聽起來像你發現這個解決方案已經但是我會後它其他任何人遇到這種。

除非您直接想要將UI元素綁定到操作的結果,否則我建議您不要使用ToCollectionView方法。相反,請執行以下操作:

private IMobileServiceTable<dbEntry> entryTable = App.MobileService.GetTable<dbEntry>(); 
private List<dbEntry> currentEntries; 

currentEntries = await entryTable.Where(ev => ev.event_date.Month == dateToShow.Month) 
    .ToListAsync(); 

foreach (dbEntry ev in currentEntries) 
{ 
    //insert ev into another List 
}