黑马程序员—多线程,单线程

 2023-09-11 阅读 15 评论 0

摘要:------- Windows Phone 7手机开发、.Net培训、期待与您交流! ------- 黑马程序员论坛,单线程与多线程比较: 单线程只能做一件事情,多线程可以做多种事情。多线程的应用,可以让一个程序同时做多种事情,提高效率。 单线程一次只会响应一个

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

黑马程序员论坛,单线程与多线程比较:

单线程只能做一件事情,多线程可以做多种事情。多线程的应用,可以让一个程序同时做多种事情,提高效率。

单线程一次只会响应一个操作,当在响应一个操作的时候,用户再进行其他操作是不会响应的,最简单常见的一个列子就是用户界面。利用线程,用户可按下一个按钮,然后程序会立即作出响应,而不是让用户等待程序完成了当前任务以后才开始响应,下面我们会说到。

默认一个进程只有一个线程,当我们想让一个进程做多种事情的时候,就应该多开线程;一个进程至少有一个线程,同一个进程中的多个线程之间可以并发执行。所谓线程并发执行,大致可以理解为,同时做多种事情;其实是每种事情做一段时间再切换到另一件事情,来回切换的执行。

多线程的优缺点:

     使用线程可以把占据时间长的程序中的任务放到后台处理;可以让用户界面更吸引人;可能使程序的运行速度更快等等。

    但是如果线程使用的太多可能会影响性能,操作系统需要不断的切换线程;更多的线程需要更多的内存空间;可能会带来更多bug等等。

.Net中如何实现多线程:

线程是要执行一段代码的。要产生一个线程,必须先为该线程写一个方法,该方法中的代码就是该线程运行所要执行的代码。线程启动时,要通过委托调用该方法(线程启动时,调用传过来的委托,委托就会执行相应的方法,实现线程执行方法)

当我们启用一个新线程的时候,要引用Threading命名空间。然后创建一个新线程Thread 名字 = new Thread(要新线程执行的方法);然后调用该线程的start方法,即名字. Start();然后就标记了该线程可以被CPU执行了,具体执行的时间由CPU决定。这里要执行的方法要是void的无参的方法或者是void的含有object类型参数的方法。

前台线程和后台线程:

一个线程默认的都是前台线程,想将一个线程设置为后台线程,需要把该线程的IsBackground设置为true,即名字.IsBackground = true;。

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

看以下小例子:

     我们创建一个Winform程序,添加两个按钮,一个为“单线程”,一个为“多线程”,分别点击,创建一个Add方法,进行for循环;单线程直接调用,多线程启动一个线程调用;界面如图:

 

代码如下:

Add方法:

void Add()

        {           

            for (int i = 1; i <= 700000000;i++ )

            {

               

            }

            MessageBox.Show("over");

        }

按钮单线程点击代码:

private void btnDan_Click(object sender, EventArgs e)

        {

            Add();           

        }

按钮多线程点击代码:

private void btnDuo_Click(object sender, EventArgs e)

        {

            Thread thread = new Thread(Add);

            thread.Start();   

        }

当我们点击按钮单线程的时候,拖动界面,发现我们是拖动不了界面的,只有for循环完毕,弹出over的时候才可以拖动;而点击按钮多线程,直接就可以拖动界面,同时for循环完毕,也会弹出over。但是我们会发现,关掉主窗口的时候,弹出来的over窗口还在,程序并没有完全关闭,还需要再关闭over窗口;这就是上面说的前台线程和后台线程的问题。我们需要在多线程里加一行代码:

thread.IsBackground = true;

把它设为后台线程。

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

转载于:https://www.cnblogs.com/saxys/archive/2013/05/07/3065548.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/46373.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息