本書は、C#5.0で新たに追加された非同期処理の機能、asyncについて解説する書籍です。既にC#をよく使っている開発者に向けて、複雑なコードを書くことなく非同期機能を実現できるasyncの機能を紹介します。既存のメソッドを非同期にする方法、タスクベースの非同期パターン(TAP)、非同期コードにおける例外処理、並列処理などをコンパクトな紙幅の中で解説しています。なお本書はEbook版のみの販売となります。
C#での非同期処理
Alex Davies 著、神崎 謙一、株式会社トップスタジオ 訳
- TOPICS
- C#
- 発行年月日
- 2013年03月
- ISBN
- 978-4-87311-604-4
- 原書
- Async in C# 5.0
- FORMAT
- EPUB
目次
はじめに 対象とする読者 本書の読み方 本書での表記 サンプルコードの使用について お問合せ先 謝辞 1章 序 非同期プログラミング 非同期コードのどこが優れているのか asyncとは何か asyncの機能 asyncですべてが解決されるわけではない 2章 プログラムが非同期でなければいけない理由 デスクトップユーザインタフェースアプリケーション たとえ話――カフェ Webアプリケーションサーバのコード もう1つのたとえ話――レストランの厨房 Silverlight、Windows Phone、Windows 8 並列コード サンプルプログラム 3章 非同期コードを手作業で書く .NETで使用される非同期パターン 最もシンプルな非同期パターン Task概説 手動非同期処理の問題点 手動非同期コードを使ったサンプルプログラムの変換 4章 asyncメソッドを書く faviconのサンプルをasyncに変換する Taskとawait asyncメソッドの戻り値型 async、メソッドのシグネチャ、インタフェース asyncメソッドにおけるreturn文 asyncメソッドには波及性がある async匿名デリゲートとラムダ式 5章 awaitが実際に行うこと メソッドの休止と復帰 メソッドの状態 コンテキスト awaitが使えない場所 catchブロックとfinallyブロック lockブロック LINQクエリ式 アンセーフコード 例外のキャプチャ asyncメソッドは必要になるまでは同期だ 6章 タスクベースの非同期パターン TAPが規定すること 計算集約型処理でTaskを使う パペットTaskを作る 従来の非同期パターンとの連携 コールドTaskとホットTask 最優先の作業 7章 asyncコードのためのユーティリティ 一定時間遅延させる Taskのコレクションを待つ コレクションの中のどれか1つのTaskを待つ オリジナルの連結子を作る 非同期処理をキャンセルする 非同期処理中に進行状況を返す 8章 どのスレッドがコードを実行しているのか? 最初のawait以前 非同期処理を行っているとき SynchronizationContextの詳細 awaitとSynchronizationContext async処理のライフサイクル SynchronizationContextの使用を避ける 同期コードと連携する 9章 asyncコードにおける例外 Taskを返すasyncメソッドにおける例外 検出されない例外 void型のasyncメソッドにおける例外 撃ちっぱなし(Fire and Forget) AggregateExceptionとWhenAll 例外を同期でスローする asyncメソッドにおけるfinally 10章 asyncを使った並列処理 awaitとlock アクター C#でアクターを使う タスク並列ライブラリのデータフロー 11章 asyncコードの単体テスト asyncにおける単体テストの問題点 有効なasyncテストを手作業で書く 単体テストフレームワークのサポートを利用する 12章 ASP.NETアプリケーションにおけるasync 非同期Webサーバコードの利点 ASP.NET MVC 4でasyncを使う ASP.NET MVCの古いバージョンでasyncを使う ASP.NET Webフォームでasyncを使う 13章 WinRTアプリケーションにおけるasync WinRTとは何か? IAsyncActionとIAsyncOperation>T< キャンセル 進行状況の報告 WinRTのコンポーネントに非同期メソッドを提供する 14章 asyncのコンパイラによる変換――その深層 スタブメソッド ステートマシン構造体 MoveNextメソッド オリジナルのコード リターンを完了に変換する メソッドの正しい場所に行く awaitのためにメソッドを一時停止する 待機後に再開する 同期で完了する 例外をキャッチする もっと複雑なコード カスタムの待機可能な型を書く デバッガと対話する 15章 asyncコードの性能 asyncのオーバーヘッドを計測する 時間のかかる処理におけるasync対ブロッキング 時間のかかる処理のasyncコードを最適化する async対手動非同期コード 時間のかかる処理がない場合のasync対ブロッキング 時間のかかる処理がないasyncコードを最適化する asyncの性能についてのまとめ