を待って、私は次のシナリオがあります。新しい非同期を必要とする各タスクで複数のタスクを持つシナリオで非同期/のawait使用方法/
お客様は、それらのそれぞれは、付属のカードの番号を持って、アカウントの数を持っています。
今、私は複数の顧客のカードで口座を照会する必要があるという要求があります。アカウントとカードを別々に照会する非同期メソッドがあります(FindAccounts(string customer)
、FindCards(string[] accounts)
)。
だから私はこの方法があります。これは、それはあなたがカードを照会することができる前に終了するすべての顧客の口座を待つ必要が問題を持って動作しますが
public async Task<Data> FindCustomersWithCards(string[] customers)
{
var accountsTasks = customers.Select(_service.FindAccounts);
var accounts = await Task.WhenAll(accountsTasks);
var cardsTasks = accounts.Select(_service.FindCards);
var cards = await Tasks.WhenAll(cardsTasks)
...
}
を。特定の顧客を照会するアカウントが終了すると(他の顧客を待たずに)、より効率的な実装が行われ、顧客アカウントのカードを照会します。
async/await
でこれを行うことができるのですかと私の質問です。 ContinueWith
で管理できると思いますが、async/await
とContinueWith
の方法で100%混同しても問題ありません。
あなたは正しいです、あなたが欲しいもののように聞こえます。アカウントごとに「アカウントを取得してカードを取得する」という大きなタスクを構築します。 – Juan
2つのアプローチを混在させるとどうなりますか?あなたはそれの欠点を知っていますか? –
ええ、私はそれを混合することを意味し、あなたはContinueWithで待つことができます、基本的にあなたはタスクを返して何かで待つことができますし、ContinueWithはありません。メソッドのシグネチャを表示すると、oyuにサンプルコード – Juan