大抵线程学习笔记第二篇

2018年1月新海,Bilibili购买的29部正版番剧中,有8部将推行“付费先看”的方针。

   前言:这首博客主要是于齐平等首博客的底子及,重新复习了一下上一样篇博客的内容,讲解了片特之运用,并且使用了汪洋底案例来验证,主要说明了异步委托的下及回调函数执行异步委托以及跨线程访问控件的缓解方案及一个双色球的案例。这篇稿子我坐代码的样式写了,里面来雅量之注解,我们可详细的钻研,很愉快能够与你们并研究。

下按照到今天终结每个动漫的热罗列2018初海:

1.线程底习

1、紫罗兰永恒花园【会员抢先看】

  (1) 多线程Thread调用委托方的实现Demo

根本词:成长、爱情、凄美、战争回忆

       class Program

开播时:2018.01.11

       {

追番人数:95.9万

              static void Main(string[] args)

故事大纲:“自动手记人偶”这个名字名噪一时之时节,已经是相当一段时间前之事了。奥兰德博士发明了用于书写记录人声话语的教条。当初他仅为家如打的马上无异机械,不知何时已普及到全球,甚至办起了供借来劳之自发性。若是客人您有期待的话,我得错过于外地方。我是,自动手记人偶服务,薇尔莉特·伊芙加登。有着像从故事写中冒出般的样貌,金发碧眼的红装,保持在随便机质的美,以玲珑剔透的动静如此说交。

              {

2、魔卡少女樱透明卡牌篇【会员抢先看】

                     Thread thread = new Thread(new
ThreadStart(DemoMethod));

重点词:魔法、恋爱、少女漫、有生之年

                     //设置线程参数

开播时:2018.01.07

                     thread.IsBackground = true;
//后台线程,常用的还是后台线程

追番人数:91.2万

                     //设置线程的名

故事大纲:木的论樱,是就读于友枝小学的小学4年级学生。与父亲与兄长3口一块生活。一天,小樱在大之书屋发现同样据奇怪之修。那本书中凡是会见让这世界带来灾难的“库洛牌”!为了回收散布各处的库洛牌,小樱成以“魔卡捕获者”并连发拼搏……

                     thread.Name = “给开发人员用底”;

3、OVERLOAD

                     //设置线程的优先级(只是提议)

要词:奇幻、穿越、骨傲天、反派角色

                       thread.Priority = ThreadPriority.Highest;
//0-31

开播时:2018.01.09

                    
//启动线程,只是报操作系统线程准备好,开始执行之线程,但是并不一定线程立即实施

追番人数:90.2万

                     thread.Start();

故事大纲:曾经的超人气网络游戏“YGGDRASIL”,在那个原先应停止运行的那无异天,正以公会中伺机强制下线的青年铃木悟,等到营运时截止,玩家角色也一筹莫展刊登游戏。拥有骷髅外表的最为强魔法师以“飞鼠”的角色身份以及总体公会一起穿越到异世界。无法离的手下下,NPC也忽然所有了独立思想,他统领的公会“安兹·乌尔·恭”将进行前所未有的好奇传说。

                     Thread.Sleep(3000);

4、Fate/EXTRA Last Encore【会员抢先看】

                     Console.ReadKey();

第一词:奇幻、战斗、虚拟世界、平行世界

              }

开播时:2018.01.28

              private static void DemoMethod()

追番人数:77.8万

                {

故事大纲:改编自TYPE-MOON原作,Marvelous出品的RPG游戏《Fate/EXTRA》,以尼禄·克劳狄乌斯也支柱,讲述了在魔力枯竭的背景下,魔术师们参加“月的圣杯战争”的故事。

                     Console.WriteLine(“执行的工作线程是:{0}”,
Thread.CurrentThread.ManagedThreadId); ;

5、齐木楠雄的天灾人祸【会员抢先看】

              }

要词:校园、喜剧、异能、另类一般

      }

开播时:2018.01.17

       执行结果是:执行的劳作线程是:10

追番人数:68.3万

  (2)线程配合Lambda表达式的以

故事大纲:改编自麻生周一的漫画,导演福田雄一,讲述生来就发生超能力的主人高中生齐木楠雄,每天都面临着各种灾难的平常,是同一部校园喜剧。

       static void Main(string[] args)

6、粗点心战争

     {

关键词:日常、喜剧、零食、粗点心

        //第一种植写法

开播时:2018.01.12

       Thread thread = new Thread(new ThreadStart(() =>

追番人数:29.7万

      {

故事大纲:粗点心,是廉价的零食之统称,其中承载了好多儿女等的希!
家在背半岛的鹿丸粗点心屋的儿子·九,勉为其难的给爸爸拜托看店。父亲称自己以聊点心领域有天然,然而自己可非思延续家业。某龙偶遭遇了接触心控的迷之美少女…..乡村的“点心之夏”开始了…

          Console.WriteLine(“执行之劳作线程是:{0}”,
Thread.CurrentThread.ManagedThreadId); ;

7、七大罪:戒律的死而复生【会员抢先看】

       }));

开播时间:2018.01.08

       //第二种写法

追番人数:41.9万

      new Thread(() =>

故事大纲:那还是口同残疾人的世界没有分开的一世。从亨德里克森与德雷弗斯区区不行圣骑士长的控制下夺取回王国底“七大罪”以及伊丽莎白、霍克。王国诞生祭也安然结束,和平终于造访了里欧涅丝王国。但,下一个威慑的预告,确实地当发生着。

      {

8、citrus【会员抢先看】

           Console.WriteLine(“执行的工作线程是:{0}”,
Thread.CurrentThread.ManagedThreadId); ;

开播时间:2018.01.08

       }).Start();

追番人数:27.1万

      //设置线程参数

故事大纲:从来没言语过恋爱的辣妹女高中生柚子,一以正经的黑发美女学生会长芽衣。两人口因为父母再结合而变成姐妹,初此见面就对相互留下最恶劣之记忆。但当学校意外目击芽衣被帅哥导师雨宫强吻的柚子,冲击性的场面以它们脑内挥之不失去,柚子逐渐让芽衣的行为所诱惑,深陷与妹妹芽衣禁断的相恋而无法自拔。

       thread.IsBackground = true; //后台线程,常用之还是后台线程

图片 1

       //设置线程的名字

9、龙王的做事

       thread.Name = “给开发人员用的”;

开播时间:2018.01.08

       //设置线程的优先级(只是提议)

追番人数:31.1万

       thread.Priority = ThreadPriority.Highest; //0-31

故事大纲:打开玄关门,有个JS(注:女子小学生)在――“依照约定,来当弟子了!”小学三年生雏鹤爱。9年。不请自来,到了16年份成为用棋界的无限强头衔保持者“龙王”的九头龙八一的爱妻,“呃?
……弟子?
呃?”“……不记了?”虽然不记也开了同JS的同居生活。因直率的好之热心肠,八一为在逐渐取回失去的炽热的物。

   
   //启动线程,只是告诉操作系统线程准备好,开始实施此线程,但是并不一定线程立即施行

10、博多豚骨拉面

        thread.Start();

开播时间:2018.01.12

        Thread.Sleep(3000);

追番人数:21.0万

       Console.ReadKey();

故事大纲:从表上看,福冈是一个和平的都会,但背地里,却是暗潮汹涌,各种违法滋生蔓延。现在,俨然成了各路杀手的激战区,甚至发出传言说这里有特别为杀手呢目标的杀人犯。福冈市长雇佣的腹心杀手、命悬一线的新娘社员、深爱着博多的私人侦探、黑客天才的情报商、俊美的复仇者、受制于黑社会组织的杀人犯。如此惊险的一致多口而为卷入了同一集市错综复杂、阴谋重重的市长选。隐藏于万马齐喑中的政治对立与关押无展现底阴谋正蠢蠢欲动,而整整事件之本色是——而且,当一个丁之倒行逆施极度多之时,“杀手诛杀者”就会见现出。

  }

11、爱吃拉给之小泉同学

       //执行结果是:

开播时间:2018.01.04

            //执行的行事线程是:4

追番人数:19.8万

            //执行之干活线程是:3

故事大纲:女高中生大泽悠的班上,来了一样各类个性冷酷又寡言,不甘于和他人打交道的神祕转生──小泉同学。然後大泽无意中窥见,这称为转学生竟然是每日寻访美味拉面的拉面老饕──!?大快朵颐的正式拉面美食漫画,终於上桌!

  (3)带参数的线程执行

12、刀要巫女

       static void Main(string[] args)

开播时:2018.01.05

     {

追番人数:17.3万

        //定义带参数的线程

故事大纲:自古以来就是在着贬损人类生命的异形“荒魂”,同时也负有依靠“御刀”来解这些荒魂的巫女。随身携带刀具的巫女被叫作“刀要”。她们隶属于日本警察的特别祭祀机动队,被国家允许具备御刀,是超过一般法法规之国家公务员,基本还是来于日本举国上下五所新高中一贯制学校的女性学生。虽然刀使们表面上了正普通的校园生活,但每当成就各种任务时,就见面手将御刀发挥出跨的力,为守护人类要是战。这个春天,从即五所学中脱颖而出的刀使们聚集在同步,按照规矩举办五校间的交锋比赛。为了取得这比,很多刀子要都当进展大力训练。其中有一个怀抱格外明显的欲念并单独磨练技巧的姑娘,她手中的御刀开辟出之前途究竟是?

        Thread thread = new Thread(new
ParameterizedThreadStart(ParameterMethodDemo));

13、妖精森林的略微不接触

        //开启线程,传递参数

开播时:2018.01.12

        thread.Start(“韩迎龙”);

追番人数:16.0万

        Thread.Sleep(3000);

故事大纲:两单稍口女孩御子地(蜜珂析)跟白明(哈库梅伊),原本不相识之少人口误打误撞而平息在和一个屋檐下。白明是独红毛行动派,某天看到报纸及有人目击到晚年鹰出没,马上就是准备好东西拉扯在御子地及山去等夕阳鹰,后来才意识原来夕阳鹰曾经是御子地于
10
年前既短暂饲养了的白鸟。而御子地则是不法发理性派,擅长家务料理而且还特地擅长唱歌(本人并未自觉),两个小口妹子在树木根下的房屋被协同在及形形色色的小人朋友碰到相识。

      }

14、Slow Start

      private static void ParameterMethodDemo(object obj)

开播时间:2018.01.07

      {

追番人数:14.3万

         Console.WriteLine(“执行一个牵动参数的线程方法:{0}”, obj);

故事大纲:一的濑花名由于当高中升学考试前一天患上严重腮腺炎缺席了公办和私立高中的试,结果无奈之化了平等名叫遭考复读生,对于好这不幸之坐疾病成为复读生的史,一底濑花名相当的介意,在成为复读生之处在就从头和气独居在。进入高中后呢针对好的立即段历史严格保密,她要好并且休善与人交流。不过当进高中后同好的几乎位同班同学(其实正如自己稍了千篇一律届)相遇开始了和睦的年轻高中在。

      }

15、刻刻

      //执行结果:执行一个带来参数的线程方法:韩迎龙

开播时:2018.01.07

  (4)异步委托回调函数的采取

追番人数:13.9万

       namespace ReviewThread

故事大纲:永远的“6时59分开”开始了——在佑河下拥有代代相传的止界术使用止界术,能够上森罗万象尽数停止的“止界”。某天,主人公树里之外甥和昆,被抓住拐犯绑架了。她为拯救出他们只要没法下了“止界术”,却饱受不应在叫那里的、除自己以外的“会动的”人类袭击。他们是尊崇止界术的“真纯实爱会”。围绕在用止界术时所必需的“石头”,止界之谜、佑河家之谜逐渐显露出水面……

       {

图片 2

              //定义委托

16、皇帝圣印战记

              internal delegate int AddDel(int a,int b);

开播时:2018.01.08

             class Program

追番人数:12.7万

              {

故事大纲:浑沌支配了地──人民钦佩惧著各种灾害。君王们手握紧著平息浑沌的〈圣印〉守护百姓。然而随著岁月流逝,君王们渐次忘掉了“守护百姓”的见地,为了争夺彼此的圣印和领地,掀起了一波而同样波的乱……魔法师希露卡唾弃毫无风骨的八方君王,而浪迹天涯的骑兵提欧则是以解放受苛政所苦之诞生地修练武艺。“我愿与骑士提欧的圣印缔结契约,誓言忠诚直至永恒。”

                     static void Main(string[] args)

17、刀剑乱舞

                     {

开播时:2018.01.08

                           
//定义委托变量的上,如果是因为第一单艺术,那么必须采取new关键字

追番人数:12.1万

                            AddDel del = new AddDel(Demo);

故事大纲:时也纪元二亚〇五年。是以反历史也目的的“历史修正主义者”开始对过去行攻击的时日。被授予了医护历史就无异使命的“审神者”,由她们所引起的绝强付丧神“刀剑男士”。这是,他们为“某个本丸”为舞台,一心一意、开朗明快地在之“花丸”日常物语——

                            //同步调用

18、原书·原书使

                            //int res = del(5, 3);

开播时:2018.01.11

                           
//异步调用,本质就是是再次打开一个线程帮咱,执行委托的法

追番人数:11.6万

                            //内部:开启一个新的线程执行委托

故事大纲:“编织起,只以您的故事。”让故事可以落实之,少女们的意思。散布于世界之故事“原写”。少女们同“原书”相遇,被那个当选,获得魔法,终成“原书使”。这是,以如此的“原书使”为对象的“见习原书使”少女们,与“原题”一同编织出好之故事的睡梦同魔法与青春之物语。

                            IAsyncResult result = del.BeginInvoke(2,
5, null, null);

19、小木乃伊到我家

                              //执行主线程要干的事务

开播时:2018.01.12

                            //异步委托的利益是:不死主线程

追番人数:10.5万

                            int methodRes = del.EndInvoke(result);

故事大纲:过在便生活之男高中生·柏木空,某天突然收到了在埃及旅行的自称“冒险家”的翁送来之木乃伊。“发现了有趣的木乃伊,就优先付给你了!”面对父亲这样形容下之迷信,不由得发抖的拖欠。但,从送来之光辉棺材里冒出的,竟然是全长12cm!?手掌大小的木乃伊……不仅尺寸略,还好胆小、爱哭,却持有说不出来的可爱,空让这么的木乃伊起名为小伊,并初步看她。在同一屋檐下开始同生活,空和小伊的旅生活到底会……

                            Console.WriteLine(methodRes);

20、pop子和pipi美的普通

                            Console.ReadKey();

开播时:2018.01.07

                       }

追番人数:10.2万

                     public static int Demo(int a, int b)

故事大纲:由于King
Records的疏忽,电视动画以及第3季而展开的希土崩瓦解……到底两人口会在动画播放前幸存下来呢……

                     {

21、比宇宙更远之地方

                            return a + b;

开播时间:2018.01.02

                     }

追番人数:10.2万

                     //执行结果:7

故事大纲:无论何时,我们的第一步总是从好奇心开始。不曾看罢的山山水水,不曾听罢之响动,不曾闻过的意味,不曾摸了之质感,不曾尝试了的食品,以及无感受了的千军万马。为了重拾不知何时忘却之记得碎片及不知何时舍弃的动之旅途。在到达顶峰的时光,我们会惦记些什么吧?40渡过的呼啸,50渡过的疯,60度过的呼号,跨越荒芜的海源到达原生地域。在地之塞外,远离文明的南边尽头。这是奔南极(比宇宙更悠久的地方)进发的季各类女孩子的旅行物语。我们经过她们想起起生于明底皇皇。

              }

22、偶像星愿

       }

开播时间:2018.01.01

  1. 寄托的异步调用:由外一个线程执行委托的方式

追番人数:6.2万

  (1) 简单的异步委托调用Demo

故事大纲:聚集于“小鸟游事务所”,肩负未来的偶像的卵。初次相遇的7人,性格和个性各有不同。然而他们分别还负有独树一帜的魅力,隐藏着身啊偶像的不解可能性。组成组合,共同踏出第一步之他们之名字是“IDOLiSH7”。他们在烁烁光辉的戏台及歌舞的身影,逐渐引发着人们的心。在光彩照人,时而严苛的偶像世界中,他们怀抱着梦想,以终端为对象。

     namespace AsyncDelegate

图片 3

     {

23、宅饮。

    internal delegate int AddDemoDel(int a,int b);

开播时:2018.01.12

            class Program

追番人数:6.2万

            {

故事大纲:因转职而至东京之天月满,20夏。刚刚达成京的她,开始于女性专用的合租房“Stella
House春野”居住!同居的人们则工作暨年龄不同,但如若有爽口的酒以及调理,就无何时都很快乐!!大家一块儿干杯,微醺的“宅饮”喜剧!!开封!!

                   static void Main(string[] args)

24、樱花忍法贴

                   {

开播时间:2018.01.08

                      Console.WriteLine(“当前主线程是:{0}”,
Thread.CurrentThread.ManagedThreadId);

追番人数:5.6万

                      AddDemoDel addDemoDel = new AddDemoDel(AddDemo);

故事大纲:故事发生在《甲贺忍法帖》10年晚底宽永三年。为天下之权斗争的史背后、忍者集团甲贺与伊贺为协调所效力之所有者展开了洋洋洒洒忍法杀戮战争,并以结尾迎来了两岸全灭的产物──这会斗争了十年后,宽永三年,甲贺五宝连所管束、拥有茅眼术操纵能力的豆蔻年华「甲贺五郎」,与伊贺五花撰中会应用盾眼术的老姑娘「伊贺响」终于遇到,他们因为决定超人之力、号称成寻众的黑集团也目标,被卷入了一样集市同相思不交的乱中。

                           //委托的异步调用

25、三丽欧男子

                            
//开始调用委托方,自动创建一个线程并实施委托的方法

开播时间:2018.01.08

                             IAsyncResult result =
addDemoDel.BeginInvoke(4, 5, null, null);

追番人数:5.4万

                             //得到委托的返回值

故事大纲:长谷川康太,17春,高中2年级。过在极其平凡生活的康太,与同等就读圣川高中的水野祐、吉野俊介、西宫谅、源诚一郎相遇了。与此同时,他那么平平的日常开始让闪耀的亮光点缀有色彩——。这样的三丽鸥男子等的遇到与闪亮的年轻物语。即将上马的,我们的故事——。

                             int inta = addDemoDel.EndInvoke(result);
//阻塞当前主线程,只当到子线程执行好,并回方法的返回值之后连续实施

26、三发星球彩色冒险

                             Console.WriteLine(“主线程执行完毕,结果是” +
inta);

开播时间:2018.01.07

                             Thread.Sleep(10000);

追番人数:5.1万

                             Console.ReadKey();

故事大纲:上野公园里偷办了一个总部。那里有三只国小女生——!没错,她们正是守护上野的正义团队“COLORS”!!结衣、小幸、琴叶三只人,今天吧为守护上野的一方平安,日夜(骗人,只到傍晚)在街头巷尾来回跑!!

                      }

27、飙速宅男【会员抢先看】

                      private static int AddDemo(int a, int b)

开播时间:2018.01.08

                      {

追番人数:4.6万

                             Thread.Sleep(3000);

故事大纲:千叶县及时总北高中的新老小野田坂道,他是一致叫热爱动画、游戏与秋叶原的御宅族。这样的异由当初中时从未遇上有一致喜好的同桌,所以他打算在入高中后一定要加盟动漫画研究部。只不过,想进入的社团也以成员不足而倒已了。面对这么现象,小野田坂道开始意气消沉了。另一方面,同样为是新兴、初中时活跃于各级大自行车比赛之今泉俊辅,某日在教练之时见到小野田坂道骑在脚踏车爬上陡坡的历程,故事通过正式进行。

                             Console.WriteLine(“当前履行的线程是:{0}”,
Thread.CurrentThread.ManagedThreadId);

28、日本的古老传说【会员抢先看】

                             return a + b;

开播时:2018.01.07

                      }

追番人数:3.4万

                      //执行结果:

故事大纲:日本底古旧传说全集是以卡通方式,还原日本太古故事之卡通片创作,专门介绍日本各地之民间传说、祭奠由来、神话等以平民百姓之间扣扣相传的故事。TV东京象征,这部动画片的落脚点是经过日本古故事,让日本复苏。不得不说,这个角度真的是异常不便理解啊。不过,既然面向的观众囊括了男女老少,这部动画片必然发生协调之长处。从全民族思想开始施救民族,这部著作背后的意义吗蛮的覃啊。

                          //当前主线程是:9

29、打工小哥

                          //当前执行的线程是:10

开播时:2018.01.05

                          //主线程执行完毕,结果是9

追番人数:3.0万

               }

故事大纲:(暂无简介)

            }

2018年大家要于自己之目标努力,要逾努力哦!!

  (2)设置一个回调函数执行异步委托

体贴入微微信公众号,寻找志同道合的伴侣吧!

            namespace AsyncDelegate

图片 4

            {

               internal delegate int AddDemoDel(int a,int b);

               class Program

               {

                      static void Main(string[] args)

                      {

                             Console.WriteLine(“当前主线程是:{0}”,
Thread.CurrentThread.ManagedThreadId);

                             AddDemoDel addDemoDel = new
AddDemoDel(AddDemo);

                             //指定回调函数,处理的异步委托

                             addDemoDel.BeginInvoke(3, 4, new
AsyncCallback(DelCallBackFuncDemo), “韩迎龙”);

                             Console.WriteLine(“主线程执行了”);

                             Console.ReadKey();

                      }

                      //定义一个托单额回调方法

                      public static void
DelCallBackFuncDemo(IAsyncResult arr)

                      {

                            
Console.WriteLine(“回调函数执行之线程是:{0}”,
Thread.CurrentThread.ManagedThreadId);

                            
//当我们的嘱托方执行得后,会自行调用次回调函数

                             AsyncResult result=(AsyncResult)arr;

                            
Console.WriteLine(“在回调方法中获取到的传递过来的状态:{0}”,result.AsyncState);

                             //回调函数获取当前托付方执行之结果

                             AddDemoDel del =
(AddDemoDel)result.AsyncDelegate; //将异步委托转成我们打定义的托项目

                             int funResult = del.EndInvoke(result);
//获取方式的返回值

                            
Console.WriteLine(“获取到当前艺术执行之结果是:{0}”, funResult);

                      }

                      private static int AddDemo(int a, int b)

                      {

                             Thread.Sleep(3000);

                             Console.WriteLine(“当前行之线程是:{0}”,
Thread.CurrentThread.ManagedThreadId);

                             return a + b;

                      }

               }

            }

            //执行结果如图所示:

      图片 5

  1. 一个双色球变化之案例

  (1)
创建一个Windows窗体应用程序(Winform),起名为DoubleBallDemo,拖放一个Button控件

  (2)项目Demo代码结果如下:

   namespace DoubleBallDemo

     {

            //定义设置标签值的委托类型

            public delegate void SetLbTextDel(string str,Label label);

            public partial class Form1 : Form

            {

                   List<Label> listlabel = new List<Label>();

                   public bool ISStop = true; //是否结束,改变Label的值

                   public Form1()

                   {

                          InitializeComponent();

                          //设置当前的按钮的名字为开始

                          btnStartEnd.Text = "开始";

                          //初始化6个Label标签

                          for (int i = 0; i < 6; i++)

                          {

                                 Label lblDemo = new Label();

                                 lblDemo.Text = "0";

                                 lblDemo.AutoSize = true; //自动调整大小

                                 lblDemo.Location = new Point(10 + i * 50, 50);//在X轴上每隔50放一个控件

                                 //第一将当前控件放到窗体里面去

                                 Controls.Add(lblDemo);

                                 //往当前集合变量里面添加当前标签

                                 listlabel.Add(lblDemo);

                          }

                   }

                   private void btnStartEnd_Click(object sender, EventArgs e)

                     {

                          //现在点击的是开始按钮

                          if (btnStartEnd.Text.Equals("开始"))

                          {

                                 this.ISStop = false;

                                   //启动一个线程,帮我们改变标签的数字

                                 Thread thread = new Thread(() =>

                                 {

                                        Random rand = new Random();

                                        while (!ISStop)

                                        {

                                                 for (int i = 0; i < listlabel.Count; i++)

                                               {

                                                      //listlabel[i].Text = rand.Next(0, 9).ToString();

                                                      //使用Invoke方法

                                                      //Invoke方法内部会沿着控件创建的路径往上找到创建此控件的线程,找到线程之后会直接使用此线程调用委托方法

                                                      //谁创建的此标签,那么就由谁调用后面传过来的委托

                                                      //标志:标志当前的控件是否是当前线程创建的

                                                      if (listlabel[i].InvokeRequired)

                                                      {

                                                             listlabel[i].Invoke(new SetLbTextDel(SetLbText), rand.Next(0, 9).ToString(), listlabel[i]);

                                                      }

                                                      else

                                                      {

                                                             //如果当前控件直接就是当前线程创建的那么就可以直接访问就行了

                                                             SetLbText(rand.Next(0, 9).ToString(), listlabel[i]);

                                                      }

                                               }

                                               Thread.Sleep(200);

                                        }

                                        //线程的方法执行完成后,会自动退出线程,线程的资源会自动释放

                                 });

                                 thread.IsBackground = true;

                                 thread.Start();

                                 //把当前按钮的名字改成结束

                                 btnStartEnd.Text = "结束";

                          }

                          else

                          {

                                 //停止线程,改变Laebl的数据

                                 //尽量避免直接关闭一个线程:abort方法

                                 //关闭线程,一般使用标志。

                                 this.ISStop = true;

                                 //把当前的按钮改成开始

                                 btnStartEnd.Text = "开始";

                          }

                   }

                   private static void SetLbText(string str, Label label)

                   {

                          label.Text = str;

                   }

            }

     }

(2) 项目显示截图:

    图片 6     
 图片 7

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图