具有同步请求的Silverlight RIA服务

时间:2011-07-15 13:27:57

标签: silverlight wcf-ria-services synchronous

我正在使用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);
                    }
                }
            };

1 个答案:

答案 0 :(得分:3)

Silverlight中的所有RIA Services调用都是异步的。

您的loadopt.Completed += (s, args) =>代码只是一个匿名的异步回调。单步调试负载会让你误以为代码是按顺序发生的。

您只能对已完成的事件回调中的数据进行操作。