所以我目前只使用Task.Factory.StartNew
进行多线程处理。我尝试做的是从API站点加载数据异步,然后立即使用数据。
我试着这样做:
var task = Task.Factory.StartNew(loadSummoner).ContinueWith(init);
private async void loadSummoner() {
summoner = await riotApi.GetSummonerAsync(region, summonerName);
leagues = await summoner.GetLeaguesAsync();
}
private void init(Task task) {
lblSummonerName.Content = summoner.Name;
}
但这不起作用,因为它只是一个电话列车,而不是第一个电话完成时的继续。这样做的最佳方式是什么?
提前致谢!
答案 0 :(得分:5)
您的LoadSummoner
方法应该返回Task
:
private async Task LoadSummonerAndLeaguesAsync() {
summoner = await riotApi.GetSummonerAsync(region, summonerName);
leagues = await summoner.GetLeaguesAsync();
}
然后你就这样称呼它:
LoadSummonerAndLeaguesAsync().ContinueWith(init);