检查Task.Factory.StartNew何时完成?

时间:2014-03-20 08:42:29

标签: c# .net

所以我目前只使用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;
}

但这不起作用,因为它只是一个电话列车,而不是第一个电话完成时的继续。这样做的最佳方式是什么?

提前致谢!

1 个答案:

答案 0 :(得分:5)

您的LoadSummoner方法应该返回Task

private async Task LoadSummonerAndLeaguesAsync() {
    summoner = await riotApi.GetSummonerAsync(region, summonerName);
    leagues = await summoner.GetLeaguesAsync();
}

然后你就这样称呼它:

LoadSummonerAndLeaguesAsync().ContinueWith(init);