【教学课件】第1章进程、线程与网络协议(cSharp#网络应用高级编程).ppt
《【教学课件】第1章进程、线程与网络协议(cSharp#网络应用高级编程).ppt》由会员分享,可在线阅读,更多相关《【教学课件】第1章进程、线程与网络协议(cSharp#网络应用高级编程).ppt(39页珍藏版)》请在三一办公上搜索。
1、C#编程三剑客,C#网络应用编程基础马骏主编 基础知识部分,适用于初学者。C#网络应用高级编程马骏、郑逢斌、沈夏炯编著 高级编程部分,适用于高级开发者。C#网络应用编程开发实例与实验指导马骏编著 上机题与项目开发实例(从设计到安装程序制作一网打尽)。,C#网络应用高级编程,第1章 进程、线程与网络协议,1.1 进程和线程 1.2 IP地址与端口 1.3 套接字 1.4 网络流,1.1 进程和线程,进程是对一段静态指令序列(程序)的动态执行过程,是系统进行资源分配和调度的一个基本单位。与进程相关的信息包括:进程的用户标志、正在执行的已经编译好的程序、进程程序和数据在存储器中的位置等。同一个进程又
2、可以划分为若干个独立的执行流,我们称之为线程。线程可以看作是进程的一个实例,是CPU调度和分配的基本单位。在Windows环境下,用户可以同时运行多个应用程序,每个执行的应用程序就是一个进程。,1.1 进程和线程(续),并行性的主要特点:并发处理在一个单处理器系统中可以通过分时处理来获得并发,系统为每个线程分配一个CPU时间片,每个线程只有在分配的时间片内才拥有对CPU的控制权,其它时间都在等待。,1.1.1 Process类,Process类位于System.Diagnostics名称空间下,它专门用于完成系统进程的管理任务。可以在本地计算机上启动和停止进程,也可以向进程查询特定类型的信息。
3、在远程计算机上,无法启动和停止进程,但可以查询进程的相关信息。在对进程进行操作时,首先要创建Process类的实例,其次还需要设置其对象成员的StartInfo属性,最后调用它的Start方法。,例.启动、停止和观察进程,1.新建一个名为ProcessExample的Windows应用程序。2.从工具箱中将Process组件拖放到设计窗体。3.添加名称空间:using System.Diagnostics;using System.Threading;4.添加“启动记事本”、“停止记事本”和“观察所有进程”三个按钮,并添加Click事件代码:private void buttonStart_C
4、lick(object sender,EventArgs e)process1.StartInfo.FileName=notepad.exe;/启动Notepad.exe进程.process1.Start();,private void buttonStop_Click(object sender,EventArgs e)/创建新的Process组件的数组,并将它们与指定的进程名称(Notepad)的所有进程资源相关联.Process myprocesses;myprocesses=Process.GetProcessesByName(Notepad);foreach(Process inst
5、ance in myprocesses)/设置终止当前线程前等待1000毫秒 instance.WaitForExit(1000);instance.CloseMainWindow();private void buttonView_Click(object sender,EventArgs e)listBox1.Items.Clear();/创建Process类型的数组,并将它们与系统内所有进程相关联,Process processes;processes=Process.GetProcesses();foreach(Process p in processes)/由于访问Idle的Star
6、tTime会出现异常,所以将其排除在外 if(p.ProcessName!=Idle)/将每个进程名和进程开始时间加入listBox1中 this.listBox1.Items.Add(string.Format(0,-301:h:m:s,p.ProcessName,p.StartTime);,1.1.2 Thread类,在System.Threading名称空间下,Thread类是用于创建和控制线程的,对线程的常用操作有:启动线程、终止线程、合并线程和让线程休眠等。,启动线程 在使用线程前,首先要创建一个线程。其一般形式为:Thread t=new Thread(enterPoint);其中
7、enterPoint为线程的入口,即线程开始执行的方法。在托管代码中,是通过委托处理线程执行的代码的。例:Thread t=new Thread(new ThreadStart(methodName);创建线程实例后,就可以调用Start方法启动线程了。,1.1.2 Thread类(续),终止线程 线程启动后,当不需要某个线程继续执行的时候,就需要终止该线程。终止线程调用Thread类的Abort方法。例如:t.Abort();Abort方法没有参数。当调用Abort方法时,CLR可能不会立即终止线程。主线程调用子线程的Abort方法后,结束子线程会占用大量CPU的时间,表面上看就像死机。为解
8、决这个问题,可以在主线程中调用子线程对象的Join方法,并在Join方法中指定主线程等待子线程结束的等待时间。,1.1.2 Thread类(续),合并线程 Join方法用于把两个并行执行的线程合并为一个单个的线程。如果一个线程t1在执行的过程中需要等待另一个线程t2结束后才继续执行,可以在t1中调用t2的join()方法。如:t2.Join();这样t1在执行到t2.join()语句后就会处于组塞状态,直到t2结束后才会继续执行。为了解决假如t2一直不结束的问题,可以在调用t2的Join方法的时候指定一个等待时间。如:t2.Join(100);Join方法通常和Abort一起使用。,1.1.2
9、 Thread类(续),让线程休眠 在多线程应用程序中,有时候并不希望某一个线程继续执行,而是希望该线程停止一段时间,等待其它线程执行之后再接着执行。这时可以调用Thread类的Sleep方法,即让线程休眠。例如:Thread.Sleep(1000);这条语句的功能是让当前线程休眠1000毫秒。注意,调用Sleep方法的是类本身,而不是类的实例。休眠的是该语句所在的线程,而不是其他线程。,1.1.2 Thread类(续),线程优先级 在C#应用程序中,可以对线程设定五个不同的优先级,由高到低分别是Highest、AboveNormal、Normal、BelowNormal和Lowest。在创建
10、线程时如果不指定其优先级,则系统默认为Normal。若想让一些重要的线程优先执行,可以使用下面的方法为其赋予较高的优先级:Thread t=new Thread(new ThreadStart(enterpoint);t.priority=ThreadPriority.AboveNormal;设置线程的优先级可改变线程的执行顺序,所设置的优先级仅适用于这些线程所属的进程。当把某线程的优先级设置为Highest时,系统正在运行的其它线程都会止。,1.1.2 Thread类(续),线程池 线程池是一种多线程处理形式,线程池为线程生命周期的开销问题和资源不足问题提供了很好的解决方案。通过对多个任务重
11、用线程,线程创建的开销被分摊到了多个任务上。线程池适用于需要多个线程而实际执行时间又不多的场合。但是如果线程要求运行的时间比较长的话,那么此时线程的运行时间比线程的创建时间要长得多,仅靠减少线程的创建时间对系统效率的提高就不是那么明显了,此时就不适合使用线程池技术,1.1.2 Thread类(续),同步 同步指在某一时刻只有一个线程可以访问变量或者对象。线程t1对variable1操作时,为了避免其他线程也对其进行操作,可以使用C#提供的lock语句将variable1锁定。实现代码为:lock(variable1);variable1+=1;注意:不要将被同步的对象声明为public。,例.
12、在程序中使用线程,1.新建一个名为ThreadExample的Windows应用程序。2.向设计窗体拖放一个Timer组件。3.名称空间:using System.Threading;4.字段声明:StringBuilder sb=new StringBuilder();Thread thread1;Thread thread2;5.代码:private void AppendString(string s)lock(sb),str.Append(s);public void Method1()while(true)Thread.Sleep(100);/线程休眠100毫秒 AppendStri
13、ng(a);public void Method2()while(true),Thread.Sleep(100);/线程休眠100毫秒 AppendString(b);6.启动线程和终止线程按钮的Click事件中添加代码:private void buttonStart_Click(object sender,EventArgs e)sb.Remove(0,sb.Length);timer1.Enabled=true;thread1=new Thread(new ThreadStart(Method1);thread2=new Thread(new ThreadStart(Method2);t
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 进程 线程 网络 协议 cSharp 应用 高级 编程
链接地址:https://www.31ppt.com/p-5658162.html