C#5で非同期プログラミングに関する頭を抱えようとしています。 (ASP.NET MVC 4やWeb APIのために)いつも使っているわけではありません。C#5.0でタスクベースの非同期プログラミングを使用しない理由ASP.NET MVC 4またはWeb API
コード以外の不都合(不必要なオーバーヘッド)はありませんか?(新しい構文はわかりやすいので、IMHOは冗談です)
C#5で非同期プログラミングに関する頭を抱えようとしています。 (ASP.NET MVC 4やWeb APIのために)いつも使っているわけではありません。C#5.0でタスクベースの非同期プログラミングを使用しない理由ASP.NET MVC 4またはWeb API
コード以外の不都合(不必要なオーバーヘッド)はありませんか?(新しい構文はわかりやすいので、IMHOは冗談です)
ほとんどの場合、実際にどこでも使用してください。そういうわけで、彼らは50ミリ秒以上かかるすべてを非同期呼び出しに変えました:)。
ただし、非同期コードと同じ落とし穴があります。デバッグが難しくなる可能性があります。 UIスレッドの長いタスクに戻ると、誤ったフリーズが発生する可能性があります(ユーザーはクリック後に移動できましたが、その後は何もしない限り後で移動できません)。 Etc.
値を待つコードで実行すると、とにかに同期コードのように動作します。そして、それがキャッシュやいくつかの高速アクションに当たった場合、効率のために非同期で実行されません。したがって、この最後の点は、これらの呼び出しでコンパイラの魔法を実行するためのオーバーヘッドがあっても、呼び出しが既に完了していてオーバーヘッドに値するものではない場合、その魔法が実行されないことを意味します。
だから、はい、私はちょうど約どこでも使用にそれを言うでしょう:)それは、それが唯一の私が言っている何を正当化する.NET
UPDATE
If this article is to believedための大きな一歩です。コールが50ミリ秒より短い時間を要した場合、そのように書き込むためのオーバーヘッドのために非同期であってはなりません。実際には、非同期アクションの代わりに同期アクションがトリガーされることがほとんどです。ただし、50ミリ秒以上の場合は、非同期コールのみで取得します。
これは、サーバーで実行するCPUまたはIOバウンド操作によって異なります。ここ は、一般にfew excerpt from MSDN
あり、非同期パイプラインを使用するとき、次の条件 は真である:
動作は、ネットワーク結合またはI/Oバウンドの代わりにCPUに結合されています。
テストでは、ブロック操作がサイト のパフォーマンスのボトルネックであり、IISがこれらのブロッキング呼び出しの非同期アクションメソッド を使用してさらに多くの要求を処理できることが示されています。
コードの単純さよりも並列性が重要です。
長時間実行している リクエストをキャンセルできるようにするメカニズムを提供する必要があります。
ありがとう!それは私が思ったものですが、私は私の信念を確認したかったのです。 – W3Max