C#多线程学习(二) 如何操纵一个线程 环球热推荐
2023-04-19 08:37:25 来源:博客园
C#多线程学习(二) 如何操纵一个线程

线程学习第一篇:C#多线程学习(一) 多线程的相关概念


【资料图】

下面我们就动手来创建一个线程,使用Thread类创建线程时,只需提供线程入口即可。(线程入口使程序知道该让这个线程干什么事)

在C#中,线程入口是通过ThreadStart代理(delegate)来提供的,你可以把ThreadStart理解为一个函数指针,指向线程要执行的函数,当调用Thread.Start()方法后,线程就开始执行ThreadStart所代表或者说指向的函数。打开你的VS.net,新建一个控制台应用程序(Console Application),编写完全控制一个线程的代码示例:

//ThreadTest.csusing System;using System.Threading;namespace ThreadTest{    public class Alpha    {        public void Beta()        {            while (true)            {                Console.WriteLine("Alpha.Beta is running in its own thread.");            }        }    };    public class Simple    {        public static int Main()        {            Console.WriteLine("Thread Start/Stop/Join Sample");            Alpha oAlpha = new Alpha();            file://这里创建一个线程,使之执行Alpha类的Beta()方法            Thread oThread = new Thread(new ThreadStart(oAlpha.Beta));            oThread.Start();            while (!oThread.IsAlive)                Thread.Sleep(1);            oThread.Abort();            oThread.Join();            Console.WriteLine();            Console.WriteLine("Alpha.Beta has finished");            try            {                Console.WriteLine("Try to restart the Alpha.Beta thread");                oThread.Start();            }            catch (ThreadStateException)            {                Console.Write("ThreadStateException trying to restart Alpha.Beta.");                Console.WriteLine("Expected since aborted threads cannot be restarted.");                Console.ReadLine();            }            return 0;        }    }}

这段程序包含两个类Alpha和Simple,在创建线程oThread时我们用指向Alpha.Beta()方法的初始化了ThreadStart代理(delegate)对象,当我们创建的线程oThread调用oThread.Start()方法启动时,实际上程序运行的是Alpha.Beta()方法:

Alpha oAlpha = new Alpha();Thread oThread = new Thread(new ThreadStart(oAlpha.Beta));oThread.Start();

然后在Main()函数的while循环中,我们使用静态方法Thread.Sleep()让主线程停了1ms,这段时间CPU转向执行线程oThread。然后我们试图用Thread.Abort()方法终止线程oThread,注意后面的oThread.Join(),Thread.Join()方法使主线程等待,直到oThread线程结束。你可以给Thread.Join()方法指定一个int型的参数作为等待的最长时间。之后,我们试图用Thread.Start()方法重新启动线程oThread,但是显然Abort()方法带来的后果是不可恢复的终止线程,所以最后程序会抛出ThreadStateException异常。

主线程Main()函数

所有线程都是依附于Main()函数所在的线程的,Main()函数是C#程序的入口,起始线程可以称之为主线程。如果所有的前台线程都停止了,那么主线程可以终止,而所有的后台线程都将无条件终止。所有的线程虽然在微观上是串行执行的,但是在宏观上你完全可以认为它们在并行执行。

Thread.ThreadState 属性

这个属性代表了线程运行时状态,在不同的情况下有不同的值,我们有时候可以通过对该值的判断来设计程序流程。ThreadState 属性的取值如下:Aborted:线程已停止;AbortRequested:线程的Thread.Abort()方法已被调用,但是线程还未停止;Background:线程在后台执行,与属性Thread.IsBackground有关;Running:线程正在正常运行;Stopped:线程已经被停止;StopRequested:线程正在被要求停止;Suspended:线程已经被挂起(此状态下,可以通过调用Resume()方法重新运行);SuspendRequested:线程正在要求被挂起,但是未来得及响应;Unstarted:未调用Thread.Start()开始线程的运行;WaitSleepJoin:线程因为调用了Wait(),Sleep()或Join()等方法处于封锁状态;

上面提到了Background状态表示该线程在后台运行,那么后台运行的线程有什么特别的地方呢?其实后台线程跟前台线程只有一个区别,那就是后台线程不妨碍程序的终止。一旦一个进程所有的前台线程都终止后,CLR(通用语言运行环境)将通过调用任意一个存活中的后台进程的Abort()方法来彻底终止进程。

线程的优先级

当线程之间争夺CPU时间时,CPU 是按照线程的优先级给予服务的。在C#应用程序中,用户可以设定 5 个不同的优先级,由高到低分别是Highest,AboveNormal,Normal,BelowNormal,Lowest,在创建线程时如果不指定优先级,那么系统默认为ThreadPriority.Normal。

给一个线程指定优先级,我们可以使用如下代码:

//设定优先级为最低myThread.Priority = ThreadPriority.Lowest;

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

C#多线程学习(二) 如何操纵一个线程 环球热推荐

2023-04-19

天天简讯:广州地铁挂牌转让广州品灏地产49%股权及相关债权,底价19.9亿元

2023-04-19

自动校准时间的钟表_自动校准时间_世界球精选

2023-04-19

太米商家助手APP_太米

2023-04-19

碘131治疗后隔离几天_碘-131治疗后需要隔离多久

2023-04-19

财政部:财政收入呈回稳向上态势

2023-04-19

全球视点!林雪萍|中国机床走到哪里了CIMT机床展回顾

2023-04-19

房子施工知识:家居风水:复式家居楼梯风水也很重要

2023-04-19

天天快资讯:悄然崛起的花境行业期待产业化发展

2023-04-19

环球今热点:三薪法定节假日_三薪

2023-04-19

中国华融(02799.HK):4月18日南向资金增持225.2万股

2023-04-19

全球焦点!“党建+智慧养老”,普陀这里托起幸福“夕阳红”

2023-04-19

巴顿:首轮进球后我的自信有提高,这是我职业生涯比较深刻的进球 环球热文

2023-04-19

vmware workstation15.5.1许可证密钥_vmware workstation 12许可证密钥

2023-04-19

一维吾尔族博主玩川剧变脸,评论区味道突然就不对了!

2023-04-19

北京书市「4月19日」活动预告

2023-04-19

《墨影侠踪》评测:武侠名侦探?不会武功的主角也能闯荡江湖 环球热资讯

2023-04-19

天天简讯:深圳招商银行支行查询_招商银行支行查询

2023-04-19

焦点热文:蒸海螺隔夜能吃吗会中毒吗

2023-04-19

一季度国内生产总值284997亿元 消费成为拉动经济增长主动力|天天看点

2023-04-19

如何加固乙烯基织物_女朋友过生日送什么自己做的礼物好-环球播资讯

2023-04-19

当心!不合格的玻璃水会成为汽车“隐形杀手”

2023-04-19

虚拟币交易哪里正规 正规虚拟币交易软件APP下载

2023-04-19

当前资讯!“中埃人民肩并肩”斋月慈善活动圆满落幕

2023-04-18

世界时讯:三亚旅游式购房火热:外地投资客涌入 游客边玩边买房

2023-04-18

两类疫苗可以有效预防肿瘤!2023版《居民常见恶性肿瘤筛查和预防推荐》发布

2023-04-18

菜栗子的做法?|全球视点

2023-04-18

金丝胡桃木哪个好_金丝胡桃木和胡桃木区别_环球播资讯

2023-04-18

环球快看点丨2023年6月acca考试时间,考前必看!

2023-04-18

节令之美·谷雨|花信三番,初夏将至

2023-04-18

淮北银保监分局开展保险业“四个重塑”专项活动启动仪式_世界信息

2023-04-18

北京工业大学重庆研究院招聘简章_最资讯

2023-04-18

最负盛名的美国大师赛,为何在赚钱这件事上如此克制?

2023-04-18

【中国网评】滥施监控、操纵舆论,这便是美式“言论自由”?-每日热文

2023-04-18

vivoy53t什么处理器

2023-04-18

最“壕”拆迁村,将诞生2143位亿万富豪,村民:一个亿算个啥

2023-04-18

当前要闻:钉钉个人版来了!将全面接入千问大模型

2023-04-18

尖沙咀置业集团(00247.HK)完成发行1367.35万股代息股份_重点聚焦

2023-04-18

金融机构专家:中国经济一季度增长呈现出诸多亮点 前景“稳中向好”-最新快讯

2023-04-18

前沿热点:这个"辣妹"凸的部位很瞩目!泰国低成本COS小哥新作

2023-04-18

精研科技(300709):该股换手率大于8%(04-18) 全球播报

2023-04-18

崩坏星穹铁道桑博遗器堆什么属性

2023-04-18

花溪区委老干部局组织离退休干部赴黄平县参观考察学习_环球新资讯

2023-04-18

第五人格祭司的天赋怎么配_第五人格 祭司天赋怎么加点

2023-04-18

生意社:短期来看稀土市场跌势难改 长期来看稀土行业需求将会进一步增长

2023-04-18

杭州:多子女家庭购首套房公积金贷款限额可上浮20%

2023-04-18

伊朗总统与沙特国王发出互访邀请 天天消息

2023-04-18

云铝海鑫顺利实现首季“开门红”

2023-04-18

当前速讯:美联储9月以后将大幅降息?高盛、道明证券看法不一

2023-04-18

睿智医药:融资净偿还132.67万元,融资余额6900.46万元(04-17) 世界要闻

2023-04-18

4月17日基金净值:鹏华前海万科REITS最新净值101.965,涨0.2% 观速讯

2023-04-18

热门:深圳公租房没结婚可以申请吗

2023-04-18

为什么选择《暴风》?

2023-04-18

原腾讯QQ空间负责人,T13专家,黄希彤被爆近期被裁员,裁员原因令人唏嘘。。

2023-04-17

注意!动力源将于5月8日召开股东大会

2023-04-17

全球今热点:松井股份: 湖南松井新材料股份有限公司关于召开2022年年度股东大会的通知

2023-04-17

每日速读!路得坦摩2022年净利1831.84万同比下滑37.77% 销售收入较上期同期减少

2023-04-17

十间鱼为什么没人养_十间鱼

2023-04-17

松井股份(688157.SH)拟设汽车涂料公司推动汽车原厂、后市场等涂料业务发展

2023-04-17

提公积金全流程 2023年个人住房公积金怎么提取出来?

2023-04-17

方城法院:走访人大代表 征求意见促执行提质效

2023-04-17

兰州万象城4月26日正式开业 商业总体量15.68万平米

2023-04-17

一图读懂|北京首批10家嵌入社区的老年护理中心长啥样?

2023-04-17

焦点快播:【公主连结同人】佑树的奇妙冒险(2)回旋的LESSON

2023-04-17

CBA联赛:将深刻汲取教训,营造风清气正的联赛环境-天天观热点

2023-04-17

闪电气象吧|预计本周滨州市前期以多云到晴天气为主 后期多阴雨天气 观热点

2023-04-17

生态修复让石嘴山提“颜值”增价值 环球头条

2023-04-17

0-1,3-0!尤文痛失良机,罗马坐稳第三,穆里尼奥或留队|焦点

2023-04-17

使用网络语言的利与弊辩论稿_谈谈你使用网络语言的经历与认识

2023-04-17

南昌新建区:托管服务+代耕代种助力春耕生产

2023-04-17

丹道实修:修炼金丹,必须要懂得四步功法,否则无从入手!

2023-04-17

焦点快播:畅通国际物流通道助力共赢发展

2023-04-16

周生生黄金价格今天多少一克(2023年04月16日)

2023-04-16

少年之途

2023-04-16

世界快报:全球连线丨Vlog:海南成为精品消费引领地

2023-04-16

快把油箱加满!再过一天半 油价要涨了-全球热资讯

2023-04-16

2023上海车展探馆:马自达CX-50_头条

2023-04-16

全面淘汰核电!德国关闭最后三座核电站,氢能产业被加快布局 环球速讯

2023-04-16

网易打不开其他页面_网易打不开|世界热文

2023-04-16

这就是信心|喜——“朋友圈”越来越广

2023-04-16

IP67+智能降噪!墨觉骨传导耳机入手仅需719元

2023-04-16

天天快看点丨【丝路话语】淄博迎大“烤”,却被“将一军”

2023-04-15

广东工业大学专科录取分数线_广东工业大学专科 热闻

2023-04-15

世界短讯!商务部国际贸易谈判代表兼副部长王受文出席“贸易数字化创新发展

2023-04-15

天天热资讯!民企风云录丨刘新安:破而后立,用品质把握市场的脉动

2023-04-15

世界新资讯:外企点赞消博会 看好中国消费市场

2023-04-15

首届中国软件创新发展大会在武汉召开

2023-04-15

场上对手场下真表兄弟!亚历山大和沃克赛后拥抱寒暄

2023-04-15

范加尔周二在上任后的首次新闻发布会|天天短讯

2023-04-15

影印的书是什么样_书的影印版是什么 还有什么版 全球要闻

2023-04-15

世界快资讯:秦刚同德国外长贝尔伯克举行第六轮中德外交与安全战略对话

2023-04-15

海里的动物图片及名称 海里的动物|天天简讯

2023-04-15

世界今日讯!黔江中学校长郑小波_黔江中学校

2023-04-14

美股财报季来袭!今年狂飙的科技股会“哑火”吗?业绩前瞻抢先看

2023-04-14

最资讯丨宁夏2023年首批进口种羊结束隔离检疫投入生产使用

2023-04-14

中考分数线什么时候出来2021山西_中考分数线什么时候出来_焦点速读

2023-04-14

四川文化产业职业学院原党委副书记、副院长王泗德 严重违纪违法被开除党籍

2023-04-14

160架飞机引发矛盾!美高官发出警告:不买波音拆发动机?

2023-04-14

2023年青海省公务员考试面试须知

2023-04-14

天天快消息!佛山拟出台提取公积金支付房租新规 年最高可提取额度则为62568元

2023-04-14