C# 多线程学习(二)线程操作

在C#创建一个线程的时候,通常使用Thread类,然后提供一个线程入口,Thread thread =new Thread(functionName),线程的入口通过ThreadStart代理(delegate)来提供,你可以把ThreadStart 当作一个函数指针,指向线程所要执行的函数(或者说 方法),当调用Thread.Start()方法后,线程就开始执行ThreadStart所代表或者说指向的函数。

然后我们开始编写一个简单的C#控制台应用程序来对一个创建的线程进行控制吧:

using System;
using System.Threading;
namespace ThreadControl
{
    class Program
    {
        public class test
        {
            public void testThread()
            {
                while (true)
                {
                    Console.WriteLine("now ,it is in child thread");
                }
            }
        }
        static void Main(string[] args)
        {

            test fun = new test();
            //下面创建一个线程,让其做test.testThread()这个任务
            Thread thread = new Thread(new ThreadStart(fun.testThread));
            thread.Start();//开始线程
            thread.Join();//让主线程等待子线程thread执行完毕
            try
            {
                Console.WriteLine("Try to restart thread");
                thread.Start();
            }
            catch (ThreadStateException)
            {
                Console.WriteLine("ThreadStateException trying to restart Alpha.Beta.Error ");
                Console.ReadLine();
            }
            Console.ReadLine();
        }
    }
}

主线程Main()函数

所有线程都是依附于Main()函数所在的线程的,Main()函数是C#程序的入口,起始线程可以称之为主线程。
如果所有的前台线程都停止了,那么主线程可以终止,而所有的后台线程都将无条件终止。
ThreadState 属性的取值如下:

  • Aborted:线程已停止;
  • AbortRequested:线程的Thread.Abort()方法已被调用,但是线程还未停止;
  • Background:线程在后台执行,与属性Thread.IsBackground有关;
  • StopRequested:线程正在被要求停止;
  • Suspended:线程已经被挂起(此状态下,可以通过调用Resume()方法重新运行
  • SuspendRequested:线程正在要求被挂起,但是未来得及响应;
  • Unstarted:未调用Thread.Start()开始线程的运行;

线程的优先级

当线程之间争夺CPU时间时,CPU 是按照线程的优先级给予服务的。在C#应用程序中,用户可以设定5个不同的优先级,由高到低分别是HighestAboveNormalNormalBelowNormalLowest,在创建线程时如果不指定优先级,那么系统默认为ThreadPriority.Normal。
给一个线程指定优先级,我们可以使用如下代码: //设定优先级为最低
myThread.Priority=ThreadPriority.Lowest;

通过设定线程的优先级,我们可以安排一些相对重要的线程优先执行,例如对用户的响应等等。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值