本节书摘来自华章出版社《C#多线程编程实战(原书第2版)》一书中的第1章,第1.2节,作者(美)易格恩·阿格佛温(Eugene Agafonov),黄博文 黄辉兰 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1.2 使用C#创建线程
在接下来的内容中,我们将使用Visual Studio 2015作为主要的工具来使用C#编写多线程程序。本节将展示如何创建一个新的C#程序,并在该程序中使用线程。
从微软官方网站可以下载免费的Visual Studio 社区版2015。我们需要它来运行示例代码。
1.2.1 准备工作
为了学习本节,你需要安装Visual Studio 2015。除此之外无需其他准备。本节的源代码放置在BookSamplesChapter1Recipe1目录中。
1.2.2 实现方式
请执行以下步骤来了解如何创建一个新的C#程序,并在其中使用线程:
1.启动Visual Studio 2015。新建一个C# 控制台应用程序项目。
2.确保该工程使用.NET Framework 4.6或以上版本。不过本节的代码在之前的版本中也能正常运行。
3.在Program.cs文件中加入以下using指令:
4.在Main方法下面加入以下代码片段:
5.在Main方法中加入以下代码片段:
6.运行程序。输出如下所示:
1.2.3 工作原理
步骤1和步骤2创建了一个C#的简单的控制台应用程序,使用了.Net Framework 4.0版本。步骤3引用了命名空间System.Threading,该命名空间包含了该程序用到的所有类型。我们使用了C#6.0提供的using static特性,可以使用System.Console类型的静态方法而不用我们指定类型名。
正在执行中的程序实例可被称为一个进程。进程由一个或多个线程组成。这意味着当运行程序时,始终有一个执行程序代码的主线程。
步骤4中定义了方法PrintNumbers,该方法会被主程序和新创建的线程使用。在步骤5中创建了一个线程来运行PrintNumbers方法。当我们构造一个线程时,ThreadStart或ParameterizedThreadStart的实例委托会传给构造函数。我们只需指定在不同线程运行的方法名,而C#编译器则会在后台创建这些对象。然后我们在主线程中以通常的方式启动了一个线程来运行PrintNumbers方法。
结果两组范围为1到10的数字会随机交叉输出。这说明PrintNumbers方法同时运行在主线程和另一个线程中。