A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 七里香 中级黑马   /  2013-9-15 17:48  /  1471 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多线程:声明一个线程。
为什么要用多线程?
1.       让计算机同时做多件事情,节约时间。
2.       后台运行程序,提高程序运行的效率,也不会使主界面出现无法响应的情况。
3.       多线程可以让一个程序“同时”处理多个事情。
4.       计算机cpu大部分时间处于空闲状态,浪费了cpu资源。
应用程序启动的时候,cpu启用进程,进程里面默认有一个线程(主线程也叫ui线程)。然后把应用程序代码拷贝到进程里面,由进程里的线程执行。
Ui线程负责监听响应用户的操作,如果被占用则界面五响应。
主线程开启另一个线程。(多线程)
.net 中如何实现多线程:
线程也要执行一段代码的,所以要产生一个线程,必须先为该线程写一个方法,这个方法中的代码就是该线程运行所要执行的代码。
线程启动时,通过委托来调用该方法(委托的好处)(线程启动时,调用传过来的委托,委托就会执行相应的方法,实现线程执行方法)。
产生线程的4个步骤:
1.编写线程要执行的方法。
2.引用system.threading命名空间。
3.实例化thread类,并传入一个指向线程所要运行方法的委托。(这时线程一经产生,但是还没有运行)。
调用thread实例的start方法,标记该线程可以被cpu执行了,但具体执行时间由cpu决定
(线程执行完委托,执行完委托自行停止)
语法:  ThreadStart ts=new ThreadStart(xunhuan);//实例一个委托
            Thread thd=new Thread(ts);实例一个线程然后传入委托
            thd.Start();(完整写法)。标记线程可以执行,并没有马上启动。
Thread thd=new Thread(xunhuan);
            thd.Start();(简单写法)
前台线程,后台线程
前台线程:只有所有前台线程都关闭,才能完成程序关闭。
后台线程:只要所有的前台线程结束,后台线程自动结束。
设置后台线程的语法:thd.IsBackground=true;
方法重入问题:
两个线程调用一个委托的时候,是把委托方法分别附加到两个线程里面去执行由cpu自行切换线程,所以当线程1的方法没有执行完的时候线程2又开始执行,所以得到的值一般少于预期。而且此时ui线程自己也能调用该方法。如果ui线程和线程都执行该方法时,ui线程先执行完后再启动线程执行。
TextBox.CheckForIllegalCrossThreadCalls=false;//关闭对文本框的跨线程检查。
(微软防止控件的方法重入而设置的属性当改为false的时候可以在线程里面引用ui线程创建的控件)
Thread类的一些重要成员:
Start()启动线程。
Abort()终止线程。
Thread.sleep(1)静态方法,可以使当前线程停止一段时间运行。
Name线程名。
Thread.CurrentThread获得当前的线程引用。
线程如何执行带参数的方法:
如果线程执行的方法含有参数,而线程启动的时候没有传入参数,则默认传入一个空的参数。
线程传入参数:start(obj 参数)参数类型为object类型。
以上是看视频的总结,发出来给大家分享一下,欢迎马友们讨论。
再说一句:这能不能给技术分呢?{:soso_e132:}

评分

参与人数 1技术分 +1 收起 理由
陈行 + 1

查看全部评分

1 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马