我一直在使用客户端对象模型为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()方法?谢谢。
答案 0 :(得分:0)
我可能不在这里,但据我所知,ExecuteQuery()要求你创建一个线程,这样你就不会在调用方法时调用UI线程的停止。您使用ExecuteQueryAsync的原因正是如此:ExecuteQueryAsync在单独的线程上执行操作,然后您只需使用dispather回调到UI线程:
ctx.ExecuteQueryAsync(onQuerySucceeded, onQueryFailed);
...
private void onQuerySucceeded(object sender, ClientRequestSucceededEventArgs args)
{
this.Dispatcher.BeginInvoke((Action)(() =>
{
doStuff();
}));
}