个性化阅读
专注于IT技术分析

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

点击下载

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

此命名空间中一些常用的类是:

类名称 描述
Mutex 它是一个同步原语, 也可以用于IPS(进程间同步)。
Monitor 此类提供了一种以同步方式访问对象的机制。
Semaphore 此类用于限制可以同时访问资源或资源池的线程数。
Thread 此类用于创建和控制线程, 设置其优先级并获取其状态。
ThreadPool 此类提供了一个线程池, 该线程池可用于执行任务, 发布工作项, 处理异步I / O, 代表其他线程等待以及处理计时器。
ThreadLocal 此类提供线程本地数据存储。

Timer 此类提供了一种机制, 用于以指定的时间间隔在线程池线程上执行方法。不允许你继承此类。
Volatile 此类包含用于执行易失性存储器操作的方法。

在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计划执行的线程。

注意:这些程序的输出可能会因上下文切换而有所不同。


赞(0)
未经允许不得转载:srcmini » 如何在C#中创建线程?解析和详细代码

评论 抢沙发

评论前必须登录!