c#应用程序设计教程第10章多线程和socket编程初步

c#应用程序设计教程第10章多线程和socket编程初步

ID:26879654

大小:416.50 KB

页数:144页

时间:2018-11-29

c#应用程序设计教程第10章多线程和socket编程初步_第1页
c#应用程序设计教程第10章多线程和socket编程初步_第2页
c#应用程序设计教程第10章多线程和socket编程初步_第3页
c#应用程序设计教程第10章多线程和socket编程初步_第4页
c#应用程序设计教程第10章多线程和socket编程初步_第5页
资源描述:

《c#应用程序设计教程第10章多线程和socket编程初步》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第10章多线程和Socket编程初步Socket编程技术广泛用于即时通信系统(如QQ、MSN等)、网络游戏、BT下载、Internet视频直播等C/S结构客户端网络程序,是一个程序员必须掌握的技术,本章介绍Socket编程初步知识。在Socket编程中,必须使用多线程技术,因此在本章首先介绍多线程,然后再介绍Socket编程。10.1创建线程如果在一个程序中,有多个工作要同时做,可以采用多线程。在Windows操作系统中可以运行多个程序,把一个运行的程序叫做一个进程。一个进程又可以有多个线程,所有程序的线程轮流共同占用CPU的运行时间,Windows操

2、作系统将时间分为时间片,每个线程分配一个时间片,一个线程用完一个时间片后,操作系统将此线程挂起,将另一个线程唤醒,使其使用下一个时间片,操作系统不断的把线程挂起,唤醒,再挂起,再唤醒,如此反复,由于现在CPU的速度比较快,给人的感觉象是多个线程同时执行。Windows操作系统中有很多这样的例子,例如复制文件时,一方面在进行磁盘的读写操作,同时一张纸不停的从一个文件夹飘到另一个文件夹,这个飘的动作实际上是一段动画,两个动作是在不同线程中完成的,就像两个动作是同时进行的。又如Word程序中的拼写检查也是在另一个线程中完成的。每个进程最少有一个线程,叫主线程

3、,是进程自动创建的,每进程可以创建多个线程。本节介绍线程类(Thread)的属性和方法以及如何创建线程。10.1.1线程类(Thread)的属性和方法线程类在命名空间System.Threading中定义的,因此如果要创建多线程,必须引入命名空间System.Threading。Thread类的常用属性和方法如下:属性Priority:设置线程优先级,有5种优先级类别:AboveNormal(稍高)、BelowNormal(稍低)、Normal(中等,默认值)、Highest(最高)和Lowest(最低)。例如语句myThread.Priority=T

4、hreadPriority.Highest设置线程myThread的优先级为最高。一个线程的优先权并不是越高越好,应考虑到整个进程中所有线程以及其他进程的情况做出最优选择。优先级相同的线程按照时间片轮流运行。优先级高的线程先运行,只有优先级高的线程停止、休眠或暂停时,低优先级的线程才能运行。构造函数:New(newThreadStart(线程中要执行的无参数方法名)),参数中指定的方法需要程序员自己定义,这个方法完成线程所要完成的任务,退出该方法,线程结束。该方法必须为公有void类型的方法,无参数。如果希望有参数,可使用VB.Net2.0中新构造函数

5、:New(newParameterizedThreadStart(线程中要执行的只能有一个参数的方法名))。方法Start():建立线程类对象后,线程处于未启动状态,这个方法使线程改变为就绪状态,如果能获的CPU运行时间,线程变为运行状态。方法IsAlive():判断线程对象是否存在,=true,线程存在。方法Abort():撤销线程对象。不能撤销一个已不存在的线程对象,因此在撤销一个线程对象前,必须用方法IsAlive()判断线程对象是否存在。静态方法Sleep():线程休眠参数设定的时间,单位为毫秒,此时线程处于休眠状态。线程休眠后,允许其他就绪线

6、程运行。休眠指定时间后,线程变为就绪状态。方法Suspend()和Resume():Suspend()方法使线程变为挂起状态。Resume方法使挂起线程变为就绪状态,如能获的CPU的运行时间,线程变为运行状态。如线程多次被挂起,调用一次Resume()方法就可以把线程唤醒。由于不安全建议不使用这两个函数。10.1.2创建线程例子【例10.1】本例使用线程类Thread创建一个新的线程,在标签控件中显示该线程运行的时间。在窗体放置2个按钮,单击按钮完成新建和停止线程的功能。(1)新建项目。在窗体中放置2个按钮和1个标签控件(label1)。button1

7、的属性Text="新线程",Enabled=true。button2的属性Text="撤销",Enabled=false。(2)在Form1.cs头部增加语句:usingSystem.Threading(3)为Form1类中声明一个委托类dFun、定义一个类dFun的变量和线程类变量://dFun类可代表无返回值有一个string参数方法delegatevoiddFun(stringtext);//dFun类变量dFundFun1;//线程类变量privateThreadthread;(4)为标题为“新线程”的按钮(button1)增加单击事件处理函数

8、如下:privatevoidbutton1_Click(objectsender,EventA

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。