Windows phone 7 Live SDK Windows Phone 7是否已在UI线程中完成回调?
正在UI线程中调用函数OnGetCompleted,UI没有响应。据我所知,我认为这些回调将在不同的线程中工作,我们必须使用dispatcher将其发布到UI线程。有什么想法吗?救命啊 调用Windows phone 7 Live SDK Windows Phone 7是否已在UI线程中完成回调?,windows-phone-7,Windows Phone 7,正在UI线程中调用函数OnGetCompleted,UI没有响应。据我所知,我认为这些回调将在不同的线程中工作,我们必须使用dispatcher将其发布到UI线程。有什么想法吗?救命啊 调用GetAsync很可能使用后台线程执行实际的获取,但它试图通过在原始线程上下文中调用已完成的回调来帮助您,这样您就不必使用调度程序 你为什么要睡(10000)个觉?回电话说“嘿,我做完了”。此时,如果需要,您应该更新UI。如果您需要进行花费大量时间的进一步处理,请生成一个后台线程、线程池任务或使用另一个异步调
GetAsync
很可能使用后台线程执行实际的获取,但它试图通过在原始线程上下文中调用已完成的回调来帮助您,这样您就不必使用调度程序
你为什么要睡(10000)个觉?回电话说“嘿,我做完了”。此时,如果需要,您应该更新UI。如果您需要进行花费大量时间的进一步处理,请生成一个后台线程、线程池任务或使用另一个异步调用和另一个回调
public class SyncHelper
{
private LiveConnectClient client;
public event EventHandler SyncStarted;
public event EventHandler SyncCompleted;
public SyncHelper(LiveConnectClient client)
{
this.client = client;
}
public void TrySync()
{
Debug.WriteLine("Beginning sync");
OnSyncStarted();
client.GetCompleted += OnGetCompleted;
client.GetAsync("me/skydrive/files");
}
private void OnGetCompleted(object sender, LiveOperationCompletedEventArgs e)
{
Thread.Sleep(10000);
Debug.WriteLine("Get Completed");
client.GetCompleted -= OnGetCompleted;
OnSyncCompleted();
Debug.WriteLine("Sync completed");
}
private void OnSyncStarted()
{
if (SyncStarted != null)
SyncStarted(this, new EventArgs());
}
private void OnSyncCompleted()
{
if (SyncCompleted != null)
SyncCompleted(this, new EventArgs());
}
}