ナビゲーション
15非同期プログラミング
15.1非同期プログラミングの重要性
.NET Framework4.5新しい並列ライブラリ(タスクライブラリ、TPLパラレル)、より簡単なプログラミング.NET並列を作ります。非同期プログラミングはもはや困難な作業です作っていない、非同期とのawait:C#5.0は、2つの新しいキーワードを追加します。この章では、非同期とのawaitの使用に焦点を当てています。
非同期プログラミングでは、メソッドの呼び出しは、呼び出し元が中断又は遮断されないスレッド(しばしばタスクまたはスレッドの助けを介して)バックグラウンドで実行されている(ブロックされていません)。
この章では、あなたは、このような非同期モードのタスク(タスクベースの非同期パターン、TAP)に基づいて、非同期モード(非同期パターン)、イベントベースの非同期パターン(イベントベースの非同期パターン)、などの異なるモード、違いを理解することができます。非同期の用途とは、TAPで待っています。あなたはこれらの異なるモード、非同期プログラミングを比較すると、あなたは本当の利点があります。
異なるモデルを議論した後、あなたは基本的な非同期プログラミングコンポーネントを学ぶために、タスクと非同期メソッド呼び出しを作成することであろう。あなたは、後続タスク(継続タスク)と非同期文脈詳細の間に隠されたものを学びます。
別の非同期タスクでは、同じシナリオが別のエラー処理の数を必要とするため、そのエラー処理を強調することが重要です。
非同期プログラミングであり、何に注意が必要で、この章の最後の部分は、ユニバーサルのWindowsアプリケーションのシナリオについて説明します。
注:タスクと並列プログラミングは、第21章で説明されています。
アプリケーションが毎ターンで応答していない場合、ユーザーはそれが非常に迷惑でしょう。マウスを使用しているとき、我々はそれに慣れているが、我々は長年にわたってそれを使用しているので、少し遅延があります。しかしUI、要求に応答するアプリケーションの即時の必要性をタッチします。そうしないと、ユーザーは(操作をやり直す)前後に触れないようにしようとします。
非同期プログラミングは、.NET Frameworkの古いバージョンでは達成することは困難であるため、それは多くの場合、所望の目的を達成されていません。Visual Studioの旧バージョンでは、多くの場合、あなたは、UIスレッドをブロックすることができるアプリケーションがあります。あなたはアイテムの数百を持っているソリューションを開きたい場合はその場合には、(長い休憩を取る)はかなりの時間がかかります。VS2017は、プロジェクトがロードするために使用する必要があり、選択したプロジェクトは、優先順位がロード与えられることになるときにのみ、負荷特性のための軽量なソリューションを提供します。最初からVS2015は、NuGetパッケージマネージャは、もはやダイアログフォームとして実装されていません。新しいパッケージマネージャは、あなたは他の操作、非同期ロードのパッケージ情報をNuGet行うことができるとき。これらは、非同期プログラミング上のいくつかの重要な例では、単にVisual Studioのです。
多くの.NET APIは、同期と非同期のバージョンを提供します。簡単に使用する方法の同期バージョンは、それは多くの場合、間違った場所に呼ばれているので。新しいWindows(Windowsランタイム、WinRTの)を介して実行している場合、APIコール40以上のミリ秒ならば、唯一の非同期バージョンは有効です。C#5.0から始まって、非同期プログラミングはちょうど同期として、より多くの容易になったので、非同期APIを使用すると、任意の負担を必要としません。もちろん、多くの非同期APIがピット(トラップ)であり、この章では、一つ一つを紹介します。
.NETの歴史の中で15.2非同期プログラミング
新しい非同期とのawaitキーワードの使用を開始する前に、まず一度どのような.NET Frameworkの非同期プログラミングモデルを理解することが最善です。早期すでに特性が非同期と.NET Frameworkの基本クラスのサポート、複数の非同期プログラミングモデルの多く持っているの.NET Framework 1.0、インチ
ここでは、主にネットワーク要求同期(シンクロナス・ネットワーキング・コール)、次の三つの方法を実行します。
- 非同期モード(非同期パターン)
- イベントベースの非同期モード(イベントベースの非同期パターン)
- ベースの非同期パターンのタスク(タスクベースの非同期パターン、TAP)
非同期モードは、APIの範囲をサポートするだけでなく、最初の非同期処理機能である、また、このようなデリゲート型として、基本的な機能をサポートしています。
非同期モードが非常に複雑になっているUIを更新するために使用されているので - のいずれかのWindowsフォームやWPF、.NET 2.0を介して、イベントベースの非同期モードを開始することをお勧めします。UIは、このモードは非常に簡単で更新しますので、このモードでは、スレッド同期コンテキストの制御は、イベントハンドラ(イベントハンドラ)を呼び出します。私はについてお話しましょう、このモデルはまた、非同期成分モード(非同期成分パターン)として知られています。
.NET Frameworkの4.5によって、あなたは、別の方法でTAPを非同期プログラミングを使用することができます。このモデルは、コンパイラ非同期とのawaitキーワードを備えており、非同期処理をサポートするために使用することにより、タスクの種類をベースにしています。
用途上記HistorySampleサンプルコード少なくとも7.1の特性とC#は下記のものが名前空間:
- システム
- System.IO
- System.Net
- System.Threading.Tasks