【发布时间】:2015-01-20 22:42:39
【问题描述】:
我知道它被问了很多,但我的问题是,我的方法不会等待请求完成,即使我已经实现了一个 TaskCompletionSource,它应该已经完成了这项工作,但它没有t.
public DecksViewModel(bool local)
{
DList = new List<Deck>();
if (local)
InitializeLocalDeckList();
else
{
Dereffering();
}
}
public async void Dereffering()
{
var e = await InitilaizeWebDeckList();
List<DeckIn> decksIn = JsonConvert.DeserializeObject<List<DeckIn>>(e);
foreach (DeckIn d in decksIn)
{
Deck dadd = new Deck();
dadd.CardCount = 0;
dadd.Name = d.name;
dadd.PicturePath = d.image;
dadd.InstallDirectory = false;
DList.Add(dadd);
}
DataSource = AlphaKeyGroup<Deck>.CreateGroups(DList, System.Threading.Thread.CurrentThread.CurrentUICulture, (Deck s) => { return s.Name; }, true);
}
public Task<String> InitilaizeWebDeckList()
{
var tcs = new TaskCompletionSource<string>();
var client = new RestClient("blabla.com");
var request = new RestRequest("");
request.AddHeader("Authorization", "Basic blabla");
client.ExecuteAsync(request, response =>
{
test = response.Content;
tcs.SetResult(response.Content);
});
return tcs.Task;
}
所以当我调用 DecksViewModel 构造函数时,我会异步尝试从网络服务器请求数据并填充模型。 关键是,相应的视图“不等待”填充模型的请求,所以它显示为空。 我用的
List<AlphaKeyGroup<Deck>> DataSource
通过 DataBinding 填充 LongListSelector。但是 DataSource 尚未设置,当它被绑定时。 希望能帮到你
【问题讨论】:
标签: c# rest windows-phone-8 async-await restsharp