[第1篇] .NET 中的线程
在第一章我们描述了什么是线程。我们讲述了很多人可能已经很熟悉的背景知识。知道了线程的哪部分最重要。在这一章,你将看到如何实现一些基本的线程;然而了解何时使用线程相对知道基本实现来说更重要一些。
[第2篇] 创建一个线程
这一部分通过两个例子让大家了解如何创建一个线程、应用程序域,了解线程属性和线程优先级。
[第3篇] 时钟和回调
由于线程与应用程序代码中的其他代码相比是无序运行的,我们不能确定在一个线程中影响一个特定共享资源的动作会在另外一个线程访问同样共享资源之前完成。有很多方法处理这些问题,但是这里我们将介绍一种简单方式;使用定时器/时钟。通过定时器,我们可以确定一个方法在一个特定时间间隔内执行,这个方法可以在继续运行之前检查需要的动作是否已经完成。这是一个非常简单的模型,但是可以应用到很多场景中去。
[第4篇] 线程的生命周期
当一个线程计划执行时它可以经过几个状态,包括未开始,活跃,睡眠,等等。线程类包含几个允许你启动、停止、恢复、退出、暂停以及等待一个线程的方法。我们可以使用ThreadState属性来获取线程的当前状态。
[第5篇] 线程挂起与恢复
线程类的Suspend() 和 Resume() 方法可以用来挂起/恢复线程。Suspend()方法将会立即挂起当前线程直到另外一个线程把它唤醒。当我们调用Suspend()方法时,线程将会进入SuspendRequested 或者 Suspended 状态。
[第6篇] 终止/等待线程
Abort()方法可以用来终止当前线程。不论何种情况下你想终止线程,比如线程执行了太长时间或者用户取消了之前的决定,Abort()方法都很重要。在一个花费很长时间的搜索进程中你可能想使用这个方法。
[第7篇] 线程的优势
额,我猜你现在可能会这么想“既然线程会对我的程序产生负面影响,那么我为什么要使用它呢?”。其实问题的关键不在于到底用不用线程,而在于何时何地使用线程。知道在什么情况下应该使用线程是好的设计决策的核心。使用线程有两个不同的优势。在这一部分,我们将讨论这两个优势是什么。
[第8篇] 线程陷阱
我们已经讨论过在程序中使用线程的两个主要优势。然而,在另外一些情况下使用线程会是一个糟糕的决定。很明显,我们并不打算列出一个完整的关于在何时创建新线程的列表,而是告诉你一个糟糕的使用线程的决定都包含哪些内容。主要有两种情况:第一种是当保证程序的执行顺序非常重要时,第二种看起来更像是一个代码中的错误-在一个循环中创建新线程。