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

Tim*_*oot 1 .net c#

所以我目前坚持使用多线程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;
}
Run Code Online (Sandbox Code Playgroud)

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

提前致谢!

Wim*_*nen 5

你的LoadSummoner方法应该返回Task:

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

然后你就这样称呼它:

LoadSummonerAndLeaguesAsync().ContinueWith(init);
Run Code Online (Sandbox Code Playgroud)