《C#多线程编程实战(原书第2版)》——1.2 使用C#创建线程

简介:

本节书摘来自华章出版社《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或以上版本。不过本节的代码在之前的版本中也能正常运行。


e140c593129b03b912c84231f40308541f57a09b

3.在Program.cs文件中加入以下using指令:


c07a01a490ce4f298349ca24b79ffe7c9f068eed

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


d3737ec9f57baab271d74430c2107aa1d819b936

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


80f9b8a398aab07bf408d0004619199843d9556e

6.运行程序。输出如下所示:


7baaebd30a37a91ab217d976fe433ad6a83fede2

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方法同时运行在主线程和另一个线程中。

相关文章
|
6月前
|
SQL 开发框架 安全
C#编程与多线程处理
【4月更文挑战第21天】探索C#多线程处理,提升程序性能与响应性。了解C#中的Thread、Task类及Async/Await关键字,掌握线程同步与安全,实践并发计算、网络服务及UI优化。跟随未来发展趋势,利用C#打造高效应用。
199 3
|
6月前
|
安全 编译器 C#
C#学习相关系列之多线程---lock线程锁的用法
C#学习相关系列之多线程---lock线程锁的用法
|
6月前
|
并行计算 安全 Java
C# .NET面试系列四:多线程
<h2>多线程 #### 1. 根据线程安全的相关知识,分析以下代码,当调用 test 方法时 i > 10 时是否会引起死锁? 并简要说明理由。 ```c# public void test(int i) { lock(this) { if (i > 10) { i--; test(i); } } } ``` 在给定的代码中,不会发生死锁。死锁通常是由于两个或多个线程互相等待对方释放锁而无法继续执行的情况。在这个代码中,只有一个线程持有锁,且没有其他线程参与,因此不
401 3
|
6月前
|
Java 调度 C#
C#学习系列相关之多线程(一)----常用多线程方法总结
C#学习系列相关之多线程(一)----常用多线程方法总结
|
6月前
|
C#
C#学习相关系列之多线程---ConfigureAwait的用法
C#学习相关系列之多线程---ConfigureAwait的用法
120 0
|
6月前
|
C#
C#学习相关系列之多线程---TaskCompletionSource用法(八)
C#学习相关系列之多线程---TaskCompletionSource用法(八)
184 0
|
6月前
|
Java C#
C#学习系列相关之多线程(五)----线程池ThreadPool用法
C#学习系列相关之多线程(五)----线程池ThreadPool用法
|
3月前
|
数据采集 XML JavaScript
C# 中 ScrapySharp 的多线程下载策略
C# 中 ScrapySharp 的多线程下载策略
|
2月前
|
安全 数据库连接 API
C#一分钟浅谈:多线程编程入门
在现代软件开发中,多线程编程对于提升程序响应性和执行效率至关重要。本文从基础概念入手,详细探讨了C#中的多线程技术,包括线程创建、管理及常见问题的解决策略,如线程安全、死锁和资源泄露等,并通过具体示例帮助读者理解和应用这些技巧,适合初学者快速掌握C#多线程编程。
82 0