- 1、本文档共43页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章多线程程序设计
第七章 多线程程序设计 ; 如果在一个程序中,有多个工作要同时做,可以采用多线程。在Windows操作系统中可以运行多个程序,把一个运行的程序叫做一个进程。一个进程又可以有多个线程,每个线程轮流占用CPU的运行时间,Windows操作系统将时间分为时间片,一个线程用完一个时间片后,操作系统将此线程挂起,将另一个线程唤醒,使其使用下一个时间片,操作系统不断的把线程挂起,唤醒,再挂起,再唤醒,如此反复,由于现在CPU的速度比较快,给人的感觉象是多个线程同时执行。Windows操作系统中有很多这样的例子,例如复制文件时,一方面在进行磁盘的读写操作,同时一张纸不停的从一个文件夹飘到另一个文件夹,这个飘的动作实际上是一段动画,两个动作是在不同线程中完成的,就像两个动作是同时进行的。又如Word程序中的拼写检查也是在另一个线程中完成的。每个进程最少有一个线程,叫主线程,是进程自动创建的,每进程可以创建多个线程。 ;Process类;例.启动、停止和观察进程;private void buttonStop_Click(object sender, EventArgs e)
{
//创建新的Process组件的数组,并将它们与指定的进程名称(Notepad)的所有进程资源相关联.
Process[] myprocesses;
myprocesses = Process.GetProcessesByName(Notepad);
foreach (Process instance 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的StartTime会出现异常,所以将其排除在外
if (p.ProcessName != Idle)
{
//将每个进程名和进程开始时间加入listBox1中
this.listBox1.Items.Add(
string.Format({0,-30}{1:h:m:s}, p.ProcessName, p.StartTime));
}
}
};超级链接到微软网站 :
System.Diagnostics.Process.Start(
打开一个窗口,列出C盘根目录下的文件及文件夹 :
System.Diagnostics.Process.Start(C:/); ;7.1 创建线程 ;7.1.1 线程类(Thread)的属性和方法 ;构造函数:Thread(new ThreadStart(线程中要执行的无参数方法名)),参数中指定的方法需要程序员自己定义,这个方法完成线程所要完成的任务,退出该方法,线程结束。该方法必须为公有void类型的方法,无参数。如果希望有参数,可使用C#2.0中新构造函数:Thread(new ParameterizedThreadStart(线程中要执行的有参数方法名))。
方法Start():建立线程类对象后,线程处于未启动状态,这个方法使线程改变为就绪状态,如果能获的CPU的运行时间,线程变为运行状态。
方法IsAlive():判断线程对象是否存在,=true,线程存在。 ;方法Abort():撤销线程对象。不能撤销一个已不存在的线程对象,因此在撤销一个线程对象前,必须用方法IsAlive()判断线程对象是否存在。
静态方法Sleep():线程休眠参数设定的时间,单位为毫秒,此时线程处于休眠状态。线程休眠后,允许其他就绪线程运行。休眠指定时间后,线程变为就绪状态。
方法Suspend()和Resume():Suspend()方法使线程变为挂起状态。Resume方法使挂起线程变为就绪状态,如能获的CPU的运行时间,线程变为运行状态。如线程多次被挂起,调用一次Resume()方法就可以把线程唤醒。由于不安全C#2
您可能关注的文档
- 第一章物联网导论v1.1.ppt
- 第一章概述(第一部分).ppt
- 第一章第二节—登录与使用.ppt
- 第一章电路模型及电路定律1.ppt
- 第一章生殖细胞发生new.ppt
- 第一章电子线路CAD与Protel99SE概述.ppt
- 第一章移动通信和手机基础知识.ppt
- 第一章物流技术及装备概论.ppt
- 第一章第二节细胞的多样性和统一性(原核细胞与真核细胞).ppt
- 第一章综合宽带接入概述.ppt
- 人教版九年级英语全一册单元速记•巧练Unit13【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit9【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit11【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit14【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit8【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit4【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit13【单元测试·基础卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit7【速记清单】(原卷版+解析).docx
- 苏教版五年级上册数学分层作业设计 2.2 三角形的面积(附答案).docx
- 人教版九年级英语全一册单元速记•巧练Unit12【单元测试·基础卷】(原卷版+解析).docx
文档评论(0)