C#多线程基础,适合新手了解
来源:互联网 发布:ubuntu xampp panel 编辑:程序博客网 时间:2024/06/07 20:18
一、创建线程
在整个系列文章中,我们主要使用Visual Studio 2015作为线程编程的主要工具。在C#语言中创建、使用线程只需要按以下步骤编写即可:
1、启动Visual Studio 2016,新建一个控制台应用程序。
2、确保该控制台程序使用.NET Framework 4.6或以上版本。然而在该篇中的所有示例使用较低版本可以正常工作。
3、双击打开该控制台应用程序中的“Program.cs”文件,在其中编写如下代码:
using System; using System.Threading; using static System.Console; namespace Recipe01 { class Program { static void PrintNumbers() { WriteLine("Starting..."); for (int i = 1; i < 10; i++) { WriteLine(i); } } static void Main(string[] args) { Thread t = new Thread(PrintNumbers); t.Start(); PrintNumbers(); } } }
在第2行代码处,我们导入了System.Threading命名空间,该命名空间包含了我们编写多线程程序所需要的所有类型。
在第3行代码处,我们使用了C# 6.0的using static特性,使用了该特性之后,在代码中允许我们在使用System.Console类型的静态方法的时候不需要指定其类型名。
在第9~16行代码处,我们定义了一个名为“PrintNumbers”的方法,该方法将在“Main”方法和线程中进行调用。
在第20行代码处,我们创建了一个线程来运行“PrintNumbers”方法,当我们初始化一个线程时,一个“ThreadStart”或“ParameterizedThreadStart”委托的实例被传递给线程的构造方法。
在第21行代码处,我们启动线程。
在第22行代码处,我们在“Main”方法中调用“PrintNumbers”方法。
4、运行该控制台应用程序,运行效果(每次运行效果可能不同)如下图所示:
二、中止线程
在这一节,我们将让线程等待一些时间,在等待的这段时间内,该线程不会消耗操作系统的资源。编写步骤如下:
1、使用Visual Studio 2015创建一个新的控制台应用程序。
2、双击打开“Program.cs”文件,编写代码如下所示:
using System; using System.Threading; using static System.Console; namespace Recipe01 { class Program { static void PrintNumbers() { WriteLine("Starting..."); for (int i = 1; i < 10; i++) { WriteLine(i); } } static void Main(string[] args) { Thread t = new Thread(PrintNumbers); t.Start(); PrintNumbers(); } } }
3、运行该控制台应用程序,运行效果(每次运行效果可能不同)如下图所示:
三、线程等待
在这一节中,我们将讲述如何在一个线程执行完毕后,再执行剩余的代码,要完成这个工作,我们不能使用Thread.Sleep方法,因为我们不知道另一个线程精确的执行时间。要使一个线程等待另一个线程执行完毕后再进行其他工作,只需要按下列步骤编写代码即可:
1、使用Visual Studio 2015创建一个新的控制台应用程序。
2、双击打开“Program.cs”文件,编写如下代码:
using System; using System.Threading; using static System.Console; using static System.Threading.Thread; namespace Recipe03 { class Program { static void PrintNumbersWithDelay() { WriteLine("Starting..."); for(int i = 1; i < 10; i++) { Sleep(TimeSpan.FromSeconds(2)); WriteLine(i); } } static void Main(string[] args) { WriteLine("Starting..."); Thread t = new Thread(PrintNumbersWithDelay); t.Start(); t.Join(); WriteLine("Thread completed"); } }}
3、运行该控制台应用程序,运行效果如下图所示:
在第26行代码处,我们在“Main”方法中调用调用“t.Join”方法,该方法允许我们等待线程t执行完毕后,再执行“Main”方法中剩余的代码。有了该技术,我们可以同步两个线程的执行步骤。第一个线程等待第二个线程执行完毕后,再进行其他的工作,在第一个线程等待期间,第一个线程的状态为“bolcked”状态,和我们调用Thread.Sleep的状态一样。
四、终止线程
在这一节中,我们将讲述如何终止另一个线程的执行。步骤如下:
1、使用Visual Studio 2015创建一个新的控制台应用程序。
2、双击打开“Program.cs”文件,编写如下代码:
using System; using System.Threading; using static System.Console; using static System.Threading.Thread; namespace Recipe04 { class Program { static void PrintNumbers() { WriteLine("Starting..."); for (int i = 1; i < 10; i++) { WriteLine(i); } } static void PrintNumbersWithDelay() { WriteLine("Starting..."); for (int i = 1; i < 10; i++) { Sleep(TimeSpan.FromSeconds(2)); WriteLine(i); } } static void Main(string[] args) { WriteLine("Starting program..."); Thread t = new Thread(PrintNumbersWithDelay); t.Start(); Thread.Sleep(TimeSpan.FromSeconds(6)); t.Abort(); WriteLine("A thread has been aborted"); t = new Thread(PrintNumbers); t.Start(); PrintNumbers(); } } }
3、运行该控制台应用程序,运行效果(每次运行效果可能不同)如下图所示:
- C#多线程基础,适合新手了解
- 浅谈c#接口的问题,适合新手来了解
- java web 基础知识点 适合新手学习 了解更过的web知识
- 适合新手了解的GUN/Linux起源
- 适合新手了解的GUN/Linux起源
- 适合新手了解的GUN/Linux起源
- 适合新手了解的GNU/Linux起源
- 网络访问基础篇(适合新手)
- 适合新手的JavaScript基础学习笔记
- Thinkphp基础入门(适合php新手)
- C#基础-----基本了解
- C# GDI+ 简单画图小例子(适合新手)
- JS入门基本教程(适合没编程基础新手)
- Android基础【Chapter 1】Android简单布局介绍,适合新手
- 学习linux两天的笔记(基础篇 适合新手)
- java线程全面总结(基础易懂 适合新手)
- C#多线程应用基础
- C# 多线程基础
- JS之正则表达式-yellowcong
- centos7 修改默认ssh端口 22
- 芯片测试的几个术语及解释(CP、FT、WAT)
- 深度学习有开源代码的文献
- 类模板(十七)
- C#多线程基础,适合新手了解
- UnityEvent 中Invoke()方法
- 未来的智能商业:BI商务智能分析系统将融合其他技术
- 简单的js路由跳转
- Java单元测试(Junit+Mock+代码覆盖率)
- javascript dom编程艺术读书笔记之图片库改进版
- Java中常见排序
- Angular4记账webApp练手项目之五(Angular4项目中创建service(服务)和使用http模块)
- 23种设计模式(16):状态模式(State)