黑马程序员-c#学习之多线程

时间:2023-02-20 10:35:55

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

      这篇日志如要总结一下观看黑马视频的知识:

       通过看看视频学习了多线程的东东

线程可以看成是cpu在做“一件事”,多线程可以看成是cpu,通过多个线程来“做事”。

1、多线程是相对于单线程来讲的,cpu在处理数据时,是通过一个线程来运行程序的。

2、一个程序至少有一个线程,来运行(做事情)。默认在winform里是有一个ui线程,而且当我们打开一个windows窗体时,这个窗体就可以看做有只有一个ui线程。

这样一个程序就只有一个线程来“做事情”,就是单线程的小程序。单线程的缺点是,cpu只有一个,cpu只能执行一个线程,这样在同一时间,cpu就只能处理“一件事”,这件事做完了再去做他默认的进程,这样cpu本来可以处理很多东西,因为只能做完“这件事”,才能做第二件事。浪费了资源。所以就要使用多线程。

3、多线程就是,在默认线程的基础上再加线程去做不同的事。也就是:“用空间来换取时间”提高cpu的效率。

。net使用多线程的步骤:

1、编写产生线程所要执行的方法

2、引用System.Threading命名空间

3、实例化Thread类,并传入一个指向线程所要运行方法的委托。(这时候这个线程已经产生,但是还没有运行)

4、调用thread实例的Start方法,标记该线程可以被cpu执行了,但是具体执行时间由cpu决定

今天对委托也有了更深的了解,委托可以把委托的对象指向给某个函数  执行委托就相当于执行那个函数了(目的其实就是方便传递 )多线程大量使用了委托。

线程启动时,调用传过来的委托,委托就会执行相应的方法,实现线程执行方法。

多线程分为前台线程和后台线程,可以在代码中把线程的isbackground属性设置为true,此线程就成了后台线程。(。net的实现)

前台线程,只有所有的前台线程都关闭才能完成程序关闭。后台线程,只要所有的前台线程结束,后台线程自动结束。

需要注意的是要传给线程的方法(让线程做的事,要实现写好)是void的不能有返回值,需要传带参数的的方法的话,参数是object型的。并在线程的实例的Threadstart()方法来传参数。还有一点就是给线程传多个参数的方法时,可以传入集合,数组,结构来实现。

线程重入:

微软解决线程重入的解决方案,默认是不允许一个线程去操作另一个线程的代码的。如果需要可以通过设置CheckForIllegalcrossThreadCalls=false来关闭这个检查。

----------------------Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

详细请查看:http://net.itheima.com/