多线程:声明一个线程。 为什么要用多线程? 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:} |