2

タスクを順番に実行しようとしましたが、代わりにランダムな順序で実行されます。

  • .ContinueWith の後に .Unwrap を追加しても役に立たない
  • Task の代わりにこれらのメソッドから T の Task を返し、その結果を呼び出し元に割り当てても機能しません。

メソッドの署名について、メソッドに async/await を含める必要があるかどうかがわかりません。

シーケンス タスク :

Task biographies = LoadArtistBiographies(apiKey);
Task blogs = LoadArtistBlogs(apiKey);
Task familiarity = LoadArtistFamiliarity(apiKey);
Task hottness = LoadArtistHottness(apiKey);
Task images = LoadArtistImages(apiKey);

await biographies.ContinueWith(b => blogs);
await blogs.ContinueWith(f => familiarity);
await familiarity.ContinueWith(h => hottness);
await hottness.ContinueWith(i => images);
await images;

実行されたメソッドのサンプル:

private async Task LoadArtistBiographies(string apiKey)
{
    var parameters = new ArtistBiographiesParameters();
    parameters.SetDefaultValues();
    parameters.ApiKey = apiKey;
    parameters.Id = _artistId;
    ArtistBiographies biographies = await Queries.ArtistBiographies(parameters);
    ItemsControlBiographies.ItemsSource = biographies.Biographies;
}

Queries.* メソッドも非同期です。

public static async Task<ArtistBlogs> ArtistBlogs(ArtistBlogsParameters parameters)

それ自体が非同期タスクを実行している連鎖タスクの正しい構文は何ですか?

4

4 に答える 4