如何在C#中创建线程(解析和详细代码)

在C#中, 多线程系统基于Thread类构建, 该类封装了线程的执行。此类包含一些有助于管理和创建线程的方法和属性, 该类在下面定义系统线程命名空间。的系统线程名称空间提供了在多线程编程中使用的类和接口。
此命名空间中一些常用的类是:

类名称 描述
Mutex 它是一个同步原语, 也可以用于IPS(进程间同步)。
Monitor 此类提供了一种以同步方式访问对象的机制。
Semaphore 此类用于限制可以同时访问资源或资源池的线程数。
Thread 此类用于创建和控制线程, 设置其优先级并获取其状态。
ThreadPool 此类提供了一个线程池, 该线程池可用于执行任务, 发布工作项, 处理异步I / O, 代表其他线程等待以及处理计时器。
ThreadLocal 此类提供线程本地数据存储。
Timer 此类提供了一种机制, 用于以指定的时间间隔在线程池线程上执行方法。不允许你继承此类。
Volatile 此类包含用于执行易失性存储器操作的方法。
【如何在C#中创建线程(解析和详细代码)】在C#程序中创建线程的步骤:
首先导入System.Threading名称空间, 它在你的程序中创建线程中起着重要作用, 因为你无需每次都编写类的完全限定名称。
Using System; Using System.Threading

现在, 在你的main方法中创建并初始化线程对象。
public static void main() { Thread thr = new Thread(job1); }

Or
你还可以使用ThreadStart构造函数来初始化新实例。
public static void main() { Thread thr = new Thread(new ThreadStart(job1)); }

现在, 你可以调用线程对象了。
public static void main() { Thread thr = new Thread(job1); thr.Start(); }

下面的程序说明了上述步骤的实际实现:
示例1:
//C# program to illustrate the //creation of thread using //non-static method using System; using System.Threading; public class ExThread {//Non-static method public void mythread1() { for ( int z = 0; z < 3; z++) { Console.WriteLine( "First Thread" ); } } }//Driver Class public class GFG {//Main Method public static void Main() { //Creating object of ExThread class ExThread obj = new ExThread(); //Creating thread //Using thread class Thread thr = new Thread( new ThreadStart(obj.mythread1)); thr.Start(); } }

输出如下:
First Thread First Thread First Thread

说明:在上面的示例中, 我们有一个名为的类执行绪包含一个名为的非静态方法mythread1()。因此, 我们创建了一个实例, 即对象的ExThread类, 并在线程启动此声明中给出的类线程a = new Thread(new ThreadStart(obj.mythread1)); 。使用T读取一个= new Thread(new ThreadStart(obj.mythread1)); 语句, 我们将创建一个名为苏并初始化该线程的工作。通过使用thr.Start(); 声明。
示例2:
//C# program to illustrate the creation //of thread using static method using System; using System.Threading; public class ExThread {//Static method for thread a public static void thread1() { for ( int z = 0; z < 5; z++) { Console.WriteLine(z); } }//static method for thread b public static void thread2() { for ( int z = 0; z < 5; z++) { Console.WriteLine(z); } } }//Driver Class public class GFG {//Main method public static void Main() { //Creating and initializing threads Thread a = new Thread(ExThread.thread1); Thread b = new Thread(ExThread.thread2); a.Start(); b.Start(); } }

输出:
0 1 2 3 4 0 1 2 3 4

说明:在上面的示例中, 我们有一个名为的类执行绪并包含两个名为的静态方法线程1()和thread2()。因此, 我们无需创建的实例执行绪类。在这里, 我们使用类名来调用这些方法, 例如ExThread.thread1, ExThread.thread2。通过使用线程a = new Thread(ExThread.thread1); 我们创建并初始化线程工作的语句一种, 对于线程类似b。通过使用a.Start(); 和b.Start(); 陈述, 一种和b计划执行的线程。
注意:这些程序的输出可能会因上下文切换而有所不同。

    推荐阅读