C# 多线程

本文详细介绍了C#中创建多线程的步骤,包括无参数和有参数线程实例的创建,以及System.Threading.Thread类的使用。讨论了线程优先级、线程状态、前台线程和后台线程的概念,还讲解了线程同步的重要性及多种实现方式,最后提到了跨线程操作的几种方法,推荐使用backgroundWorker控件。
摘要由CSDN通过智能技术生成

创建多线程的

步骤:

  1. 创建指向线程所要执行方法的委托
  2. 实例化Thread类,并传入一个指向线程所要执行方法的委托。(这时线程已经产生,但还没有运行)
  3. 调用Thread实例的Start方法,标记该线程可以被CPU执行了,但具体执行时间由CPU决定

System.Threading.Thread类
Thread类是是控制线程的基础类,位于System.Threading命名空间下,具有4个重载的构造函数:

  1. Thread(ParameterizedThreadStart)初始化Thread类的新实例,指定允许对象在线程启动时传递给线程的委托。要执行的方法是【有参的】
  2. Thread(ParameterizedThreadStart,int)    初始化Thread类的新实例,指定允许对象在线程启动时传递给线程的委托,并指定线程的最大堆栈大小,要执行的方法是【有参的】
  3. Thread(ThreadStart)初始化Thread类的新实例。要执行的方法是【无参的】
  4. Thread(ThreadStart,Int)初始化Thread类的新实例,指定线程的最大堆栈大小。要执行的方法是【无参的】

ThreadStart和ParameterizedThreadStart本质上是一个委托,
ThreadStart是无参数的委托
ParameterizedThreadStart是有参数的委托,他的输入参数必须是一个object类型的,而且只有一个输入参数。

创建无参数线程实例

static void Main(string[] args){
    ThreadStart childref = new ThreadStart(method_function);//创建线程委托
    Thread childThread = new Thread(childref);//创建子线程
    childThread.Start();//启动线程
}

public static void method_function(){
    Console.WriteLine("hello");
}

创建有参数线程实例

static void Main(string[] args){
    ParameterizedThreadStart cr2 = new ParameterizedThreadStart(outputfunc2);//创建线程委托
    Thread childThread = new Thread(cr2);//创建子线程
    childThread.Start(5);//带参数启动
}

public static void outputfunc2(object b){
	int a = Convert.ToInt32(b);
	Console.WriteLine(a);
}

System.Threading.Thread类

常用属性

public static Context CurrentContext { get; }    //获取线程正在其中执行的当前上下文。
public static Thread CurrentThread { get; }    //获取当前正在运行的线程。
public ExecutionContext ExecutionContext { get; }//获取一个ExecutionContext 对象,
                                                //该对象包含有关当前线程的各种上下文的信息。
public bool IsAlive { get; }//获取当前线程的执行状态。此线程已启动并且尚未
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值