在Silverlight客户端对象模型中使用ExecuteQuery()时出现异常

时间:2011-04-14 20:02:45

标签: silverlight sharepoint object model client

我一直在使用客户端对象模型为SharePoint开发Silverlight用户控件。这是编码

            InitializeComponent();
            ctx = ClientContext.Current;
            Web web = ctx.Web;
            ctx.Load(web, oweb => oweb.Title);
            ctx.Load(web, oweb => oweb.Lists);
            ctx.ExecuteQuery();

我听说SIlverlight支持ExecuteQuery()和ExecuteQueryAsync()方法。但我收到这样的异常消息"调用的方法或属性可能会阻止UI线程,并且不允许。请使用后台线程来调用方法或属性,例如,使用System.Threading.ThreadPool.QueueUserWorkItem方法来调用方法或属性。"

谁能告诉我哪里出错了以及如何使用ExecuteQuery()方法?谢谢。

1 个答案:

答案 0 :(得分:0)

我可能不在这里,但据我所知,ExecuteQuery()要求你创建一个线程,这样你就不会在调用方法时调用UI线程的停止。您使用ExecuteQueryAsync的原因正是如此:ExecuteQueryAsync在单独的线程上执行操作,然后您只需使用dispather回调到UI线程:

ctx.ExecuteQueryAsync(onQuerySucceeded, onQueryFailed);

...

 private void onQuerySucceeded(object sender, ClientRequestSucceededEventArgs args)
 {
 this.Dispatcher.BeginInvoke((Action)(() =>
            {
doStuff();
}));
}