我正在使用Silverlight的RIA服务并使用以下代码在DataItemCollection中加载集合。
我的问题是LoadOperation运行它返回0行,然后一段时间后,它再次获得调试器中的控件,然后运行for循环,然后给出正确的计数。
因此,它似乎是异步的。如何同步获取它,以便在返回数据时给出正确的计数?
ReportingCategoryContentAssociationContext _ReportingCategoryContentAssociationContext = new ReportingCategoryContentAssociationContext();
DataItemCollection lstdt = new DataItemCollection();
LoadOperation loadopt = _ReportingCategoryContentAssociationContext.Load(_ReportingCategoryContentAssociationContext.GetReportingContentScoreByCategoryQuery());
loadopt.Completed += (s, args) =>
{
if (!loadopt.HasError)
{
DataItem dtitem = null;
foreach (GetReportingCategoriesContentScore_Result Lkt in ((LoadOperation<GetReportingCategoriesContentScore_Result>)s).Entities)
{
dtitem = new DataItem();
dtitem.ReportingCategoryID = Lkt.CategoryID;
dtitem.ParentCategoryID = Lkt.ParentCategoryID;
dtitem.CategoryTitle = Lkt.CategoryTitle;
lstdt.Add(dtitem);
}
}
};
答案 0 :(得分:3)
Silverlight中的所有RIA Services调用都是异步的。
您的loadopt.Completed += (s, args) =>
代码只是一个匿名的异步回调。单步调试负载会让你误以为代码是按顺序发生的。
您只能对已完成的事件回调中的数据进行操作。