C#によるWindowsシステムプログラミング
第2版
著者 | 北山 洋幸 |
---|---|
判型 | B5変型、504頁 |
ISBN | 978-4-87783-468-5 |
価格 | 本体4,800円 |
発行日 | 2017年1月10日(初版 第1刷) 2019年10月10日(第2版 第1刷) |
備考 | ダウンロードサービス:学習に使えるサンプルファイル |
本書について
本書は、C#の入門レベルを終えた方々やソフトウェア開発に長く従事してきた方々を対象として、C#を使った本格的なシステムを開発するときに悩むようなことがらを中心にまとめた書籍です。
C#は、プログラミング入門者にとって比較的習得が容易な言語ですが、使いこなすとなると話は別です。本書は、C#特有な機能を使いこなすレベルまではいかなくても、いろいろな言語をマスターし、システム開発にも慣れ親しんだ人が、C#を使用してシステムプログラミングを行うのに最低限必要と思われる内容を解説します。たとえば、目的の性能を達成するための方策を知りたい場合や、あるいはオープンソースのプロダクトなどと融合したシステムを開発したい場合などを想定しています。
本書は、C#や.NET Frameworkを体系的に学びたい方々を対象とした書籍ではありません。そのかわり、C#に慣れてしばらくした頃に読み直すと良さそうな題材を厳選しました。一般のC#入門書では解説しないデータ型の基礎、マネージドコードとアンマネージドコードの融合、並列処理の基礎、並列処理で問題となるGUIとスレッドの関係、データ並列、デリゲートとラムダ式、同期処理、フォーム間やスレッドからのコントロールアクセス、そしてプロセス制御などを解説します。入門書を読破して簡単なプログラムを開発できるようになった人が、実際のシステムを開発するようになったときに読んでほしい内容としました。
目次
- 第1章 C#概論
- 1-1 C#の基本
- 1-2 データ型
- 1-3 値型とは
- 1-4 参照型とは
- 1-5 C#の型とAliasの関係
- 1-6 C#の型
- 1-7 文字列型
- 1-8 配列
- 1-9 構造体
- 1-10 引数
- 1-11 デリゲート入門
- 第2章 マネージドとアンマネージド
- 2-1 アンマネージド呼び出しの概要
- 2-2 マネージドプログラムとアンマネージドプログラムの連携
- 2-3 DLLのメソッド名を変更する
- 2-4 .DEFファイルを使ったエクスポート
- 2-5 アンマネージドからマネージドを利用
- 2-6 マネージド/アンマネージド間のデータ交換
- 2-7 マネージドからアンマネージドへデータを渡す
- 2-8 アンマネージドからマネージドへデータを返す
- 2-9 文字列の受け渡し
- 2-10 構造体の受け渡し
- 2-11 配列の受け渡し
- 第3章 並列処理
- 3-1 並列処理の概要
- 3-2 シンプルスレッド
- 3-3 Taskで記述
- 3-4 暗黙的な起動
- 3-5 ラムダ式で記述
- 3-6 スレッドに値を渡す
- 3-7 スレッドに値を渡す(Taskで記述)
- 3-8 スレッドから情報を受け取る
- 3-9 タスク配列
- 3-10 タスク継続
- 3-11 入れ子タスクと子タスク
- 第4章 デリゲートとラムダ式
- 4-1 デリゲート
- 4-2 ラムダ式
- 第5章 データ並列化
- 5-1 データ並列の基礎
- 5-2 ループからの脱出
- 5-3 スレッドローカル変数
- 5-4 ループ取り消し
- 第6章 並列処理とGUI
- 6-1 並列処理とGUI更新の概要
- 6-2 シングルスレッド
- 6-3 スレッドとタイマーで監視
- 6-4 BackgroundWorkerを使う方法
- 6-5 ThreadクラスとInvoke
- 6-6 TaskクラスとInvoke
- 6-7 非同期メソッド
- 6-8 非同期メソッド応用
- 6-9 TaskクラスとInvoke(GUIを頻繁に更新)
- 6-10 非同期メソッド(GUIを頻繁に更新)
- 6-11 非同期メソッド応用(GUIを頻繁に更新)
- 6-12 スレッド間でメッセージ通信(1)
- 6-13 スレッド間でメッセージ通信(2)
- 6-14 スレッド間でメッセージ通信(3)—Taskクラス
- 6-15 BackgroundWorkerを使ったスレッド間のコントロールアクセス
- 6-16 スレッドとQueueクラスによるスレッド間のコントロールアクセス
- 6-17 バウンズ(BackgroundWorker)
- 6-18 バウンズ(Invoke)
- 6-19 CreateGraphicsを使ったコントロールアクセス
- 第7章 同期
- 7-1 Interlockedクラスで同期
- 7-2 終了監視
- 7-3 Monitorクラスによる同期
- 7-4 lock文による同期
- 7-5 非同期呼び出し
- 7-6 同期呼び出し
- 7-7 BeginInvokeメソッド
- 7-8 EventHandlerデリゲートによる同期呼び出し
- 7-9 ManualResetEventと同期
- 7-10 AutoResetEventと同期
- 7-11 スレッドプール
- 7-12 コールバックでメソッド完了を知る
- 7-13 コールバックとたくさんの非同期呼び出し
- 7-14 volatileキーワード
- 7-15 ReaderWriterLockによるクラス同期
- 7-16 ミューテックス
- 7-17 ミューテックス(GUI版)
- 7-18 セマフォ
- 7-19 コンカレントコレクション
- 第8章 フォーム間のコントロールアクセス
- 8-1 親フォームから子フォームのラベル表示
- 8-2 親フォームから子フォームのコンストラクタでラベル表示
- 8-3 子フォームから返却値を受け取る
- 8-4 親フォームから子フォームのコントロールをアクセス
- 8-5 子フォームから親フォームを直接呼び出す
- 8-6 子フォームから親にPaintイベントを送る(1)
- 8-7 子フォームから親にPaintイベントを送る(2)
- 8-8 イベントハンドラで子フォームから親に通知
- 8-9 フォーム間のメッセージ通信によるコントロールアクセス
- 第9章 プロセス
- 9-1 プロセスの起動
- 9-2 プロセスを起動し同期で完了を待つ
- 9-3 プロセスを起動し非同期で完了を待つ
- 9-4 ミューテックスでインスタンスの多重起動を禁止
- 9-5 セマフォでプログラムの多重起動を禁止
- 9-6 プロセス名で多重起動を禁止
- 9-7 DLLによるプロセス制御
- 9-8 DLLによるプロセス間通信
- 9-9 標準I/Oを使用したプロセス間通信
- 9-10 ネットワークを使用したプロセス間通信