2010-12-20 24 views
3

今日非同期的にメソッドを呼び出し、メソッドを非同期で呼び出し、呼び出し元のコールバックメソッドを使用しました。新しいキーワード 'await'を使用した非同期呼び出し

最近、新しいawaitキーワードを使用してこれを行う新しい方法について、this postについてお話できます。数行のコードを保存する以外に、この新しいモデルの主な利点は何ですか?

2つの異なる非同期呼び出しを行うときに、呼び出し元のコールバックのどちらか一方のみに戻るようにするためのソリューションが組み込まれていますか?

CTP(Community Technical Preview)は何を意味していますか?この新しいキーワードは、C#およびVB.NETの次のバージョンで使用できますか? C#5.0の

答えて

4

Asynchrony in C# 5, Part One

エリックリペットのブログ記事から設計者は、 は非同期コードを書くことが苦痛であることを非常に多くの方法で を実現しました。非同期コードは で、理由は分かりません。 が表示されているので、 への変換は複雑で、 コードには というコードの意味があいまいになっています。

この記事では、イテレータブロック、匿名メソッド、クエリ補完および動的型のように説明しているため、難しく簡単なものを作成することを意図しています。

コミュニティテクニカルプレビュービットについては、典型的には、「待っている」ことはC#の次のバージョンになることを意味しますが、何かが変更されないという保証はありません。だから、あなたが何か(コードやブログの投稿)を書くとその休憩はそれらを責めません。

1

非同期操作が完了したら新しいタスクを開始するには、 "await"キーワードは必要ありません。必要なのはTask.ContinueWhenAllメソッドです。

これは「アルファ」段階にあり、バグを含んでいる可能性があり、最終的には変更されないことを意味します(将来変更される可能性があります。 )。

3

私は、「数行のコードを保存する」というのは控えめな言い方です。 awaitキーワードを使用すると、通常の同期メソッドによく似た非同期メソッドを作成できるように、コンパイラは必要な配線をすべて生成できます。

コールバックを使用する現在のパラダイムには、特定の言語構成を使用できないことや複雑なエラー処理など、多くの制限があります。この複雑さはすべて、コンパイラによって生成されたコードによって効果的に隠されます。

Async CTPには、いくつかのWord文書が付属しています。詳細については、こちらをご覧ください。あなたがすでにそれらを見ていない場合は、そうすることをお勧めします。 ".NET.docxの非同期"ドキュメントには、コンパイラが生成したコードの拡張を示す非常に精巧な例があります。

関連する問題