WP8 IMobileServiceTable - 检测异步调用的结束

时间:2013-01-23 17:07:38

标签: azure windows-phone-8 azure-mobile-services asynchronous

我的应用程序简单调用Azure Webservice数据库,我想将返回的行复制到新列表中。

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的“where”调用是异步的,所以到达循环时,currentEntries中还没有元素。

如何在执行循环之前检测到调用已完成?是否有一个事件处理程序?

谢谢。

1 个答案:

答案 0 :(得分: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
}