且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《C#多线程编程实战(原书第2版)》——1.5 终止线程

更新时间:2022-09-18 12:07:20

本节书摘来自华章出版社《C#多线程编程实战(原书第2版)》一书中的第1章,第1.5节,作者(美)易格恩·阿格佛温(Eugene Agafonov),黄博文 黄辉兰 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.5 终止线程

本节将讲述如何终止线程的执行。

1.5.1 准备工作

为了学习本节,你需要安装Visual Studio 2015。除此之外无需其他准备。本节的源代码放置在BookSamplesChapter1Recipe4目录中。

1.5.2 实现方式

请执行以下步骤来了解如何终止线程的执行:
1.启动Visual Studio 2015。创建一个新的C#控制台应用程序项目。
2.在Program.cs文件中加入以下using指令:


《C#多线程编程实战(原书第2版)》——1.5 终止线程

3.在Main方法下面加入以下代码片段:


《C#多线程编程实战(原书第2版)》——1.5 终止线程


《C#多线程编程实战(原书第2版)》——1.5 终止线程

4.在Main方法中加入以下代码片段:


《C#多线程编程实战(原书第2版)》——1.5 终止线程

5.运行程序。

1.5.3 工作原理

当主程序和单独的数字打印线程运行时,我们等待6秒后对线程调用了t.Abort方法。这给线程注入了ThreadAbortException方法,导致线程被终结。这非常危险,因为该异常可以在任何时刻发生并可能彻底摧毁应用程序。另外,使用该技术也不一定总能终止线程。目标线程可以通过处理该异常并调用Thread.ResetAbort方法来拒绝被终止。因此并不推荐使用Abort方法来关闭线程。可优先使用一些其他方法,比如提供一个CancellationToken方法来取消线程的执行。在第3章中我们会讨论该方法。