C#高度なプログラミング、第11版 - 第15章

ナビゲーション

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

15.2.1同期呼び出し

313 15.2.2非同期モード

15.2.3イベントベースの非同期パターン314

15.2.4タスクベースの非同期パターン314

15.2.5誘導main()メソッド315

基本15.3非同期プログラミング315

タスク316の作成15.3.1

15.3.2非同期メソッド呼び出し316

15.3.3使用Awaiter 317

タスク317の15.3.4継続

15.3.5同期コンテキスト318

非同期メソッドの複数を使用して15.3.6 318

15.3.7使用ValueTasks 319

15.3.8変換非同期モード320

320の取り扱い15.4エラー

例外処理非同期メソッド15.4.1 321

321 15.4.2非同期メソッドオーバー例外処理

15.4.3使用322情報AggregateException

15.5非同期のWindowsとアプリケーション322

15.5.1設定は323を待ちます

UIスレッド324へ15.5.2スイッチ

15.5.3使用IAsyncOperation 325

15.5.4避ける閉塞325

15.6概要325

おすすめ

転載: www.cnblogs.com/zenronphy/p/12501609.html