第1章 定义线程
1.1 线程的定义
1.1.1 多任务
1.1.2 进程
1.1.3 线程
1.2 .NET和C#对线程的支持
1.2.1 System.Appdomain类
1.2.2 线程管理与.NET运行库
1.3 本章小结
第2章 .NET中的线程
2.1 System.Threading命名空间
2.1.1 Thread类
2.1.2 创建线程
2.1.3 ThreadStart委托和执行分支
2.1.4 线程的属性和方法
2.1.5 线程的优先级
2.1.6 计时器和回调
2.1.7 使用线程调节线程
2.2 线程的生存期
2.2.1 使线程睡眠
2.2.2 中断线程
2.2.3 暂停及恢复线程
2.2.4 销毁线程
2.2.5 连接线程
2.3 为什么线程不是万能的
2.4 使用线程的时机
2.4.1 后台进程
2.4.2 访问外部资源
2.5 线程的陷阱
2.5.1 再次访问的执行顺序
2.5.2 循环中的线程
2.6 本章小结
第3章 使用线程
3.1 为何要同步
3.1.1 同步重要的代码段
3.1.2 使账户对象不可改变
3.1.3 使用线程安全包装器
3.2 .NET对同步的支持
3.3 .NET同步策略
3.3.1 同步上下文
3.3.2 同步代码区
3.3.3 手控同步
3.3.4 同步和性能
3.4 小心死锁
3.5 端到端的示例
3.5.1 编写自己的线程安全包装器
3.5.2 数据库连接池
3.6 本章小结
第4章 线程设计规则
4.1 应用程序中的多线程
4.2 STA线程模式
4.3 MTA线程模式
4.3.1 指定线程模式
4.3.2 设计线程应用程序
4.3.3 线程和关系
4.4 本章小结
第5章 线程应用程序的伸缩
5.1 什么是线程池管理
5.1.1 需要线程池的原因
5.1.2 线程池的概念
5.2 CLR和线程
5.2.1 CLR在线程池管理中的作用
5.2.2 线程池管理中的问题
5.2.3 线程池的大小
5.3 ThreadPool类
5.4 C#中的线程池编程
5.5 .NET中的可伸缩性
5.6 本章小结
第6章 调试与跟踪线程
6.1 创建应用程序代码
6.2 调试代码
6.2.1 Visual Studio.NET调试器
6.2.2 单步执行代码
6.2.3 设置断点
6.2.4 调试线程
6.3 代码的跟踪
6.3.1 Trace类
6.3.2 使用不同的侦听器应用程序
6.3.3 跟踪选项
6.3.4 Debug类
6.4 DataImport示例
6.4.1 代码
6.4.2 测试应用程序
6.4.3 逻辑错误
6.5 本章小结
第7章 联网与线程
7.1 .NET中的联网
7.1.1 System.Net命名空间
7.1.2 System.Net.Sockets命名空间
7.2 创建示例应用程序
7.2.1 设计目标
7.2.2 构建应用程序
7.2.3 运行应用程序
7.3 本章小结
附录A 支持. 勘误表与代码下载