C#での非同期処理

[cover photo]
TOPICS
C#
発行年月日
ISBN
978-4-87311-604-4
原書
Async in C# 5.0
FORMAT
EPUB
Ebook
1,980円
Ebookを購入する

本書は、C#5.0で新たに追加された非同期処理の機能、asyncについて解説する書籍です。既にC#をよく使っている開発者に向けて、複雑なコードを書くことなく非同期機能を実現できるasyncの機能を紹介します。既存のメソッドを非同期にする方法、タスクベースの非同期パターン(TAP)、非同期コードにおける例外処理、並列処理などをコンパクトな紙幅の中で解説しています。なお本書はEbook版のみの販売となります。

目次

はじめに
    対象とする読者
    本書の読み方
    本書での表記
    サンプルコードの使用について
    お問合せ先
    謝辞

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の性能についてのまとめ