我的代码块:任务<T>冻结UI线程
Dispatcher.BeginInvoke(() => {
var Users = GetUsers().Result;
// proceed...
}
private Task<List<User>> GetUsers()
{
var tcs = new TaskCompletionSource<List<User>>();
wbclient.DownloadStringCompleted += (o, e) => {
if (e.Error == null)
tcs.SetResult(JsonConvert.DeserializeObject<List<User>>(e.Result));
else
tcs.TrySetException(e.Error);
};
wbclient.DownloadStringAsync(someUri);
return tcs.Task;
}
我想,然后再继续让所有的用户。所以我在调度员中调用GetUser
方法。我只想等到DownloadStringCompleted
事件发生,然后返回。但通过上面的代码,UI会冻结。任何帮助表示赞赏。
注:
我使用windows-phone 7
,不支持async
await
不,不。没有。 Dispatcher **强制**它在UI线程中运行。 –
@newStackExchangeInstance仍然UI冻结! –
@AshokDamani:是的,因为你正在使用'任务 .Result'。阅读该财产的文档。 –