多线程演示程序设计文档_第1页
多线程演示程序设计文档_第2页
多线程演示程序设计文档_第3页
多线程演示程序设计文档_第4页
多线程演示程序设计文档_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

北京农学院计算机与信息工程学院操作系统课程设计多线程演示程序设计系别:计算机科学与技术系指导教师:张一学号:201320721061姓名:杨建利日期:2015/7/22利用C#语言编写的图形用户界面的多线程演示程序,侧重于线程的创建以及应用。

目录1设计要求 32分析 33设计思路 34制作过程 44.1三个界面的设计 44.2函数设计 5使用说明 91主界面使用说明 92输出素数界面使用说明 103比大小游戏界面使用说明 10操作注意的地方 10课程设计收获 10参考资料 111设计要求设计一个有用户图形界面的多线程演示程序。2分析多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理(Chip-levelmultithreading)或同时多线程(Simultaneousmultithreading)处理器。[1]在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理(Multithreading)”。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程(台湾译作“执行绪”),进而提升整体处理性能设计思路。【1】根据设计要求以及定义,我们需要设计制作一个基于GUI的多个线程的操作程序,即同一时间段,要求程序执行多个任务。3设计思路由于是图形用户界面,所以采取C#程序设计语言进行编写,使用VS2010/VS2012的编译器进行编写。设计一个主程序的界面,利用主程序页面创建两个线程,两个线程分别创建属于自己的界面,执行自己的操作,两者之间互相不干扰。为了增添实用性以及娱乐性。3.1在主程序界面中创建一个时间线程,用于在主界面上显示系统时间。3.2创建背景音乐的播放线程(利用C#自带的播放函数)3.3在主程序中设计看图片的功能(无需单独创建线程,属于主线程)4设计完毕4制作过程4.1三个界面的设计1主界面2输出素数界面3比大小游戏界面4.2函数设计1程序主界面:1.1时间线程创建时间线程,在时间线程中获取系统时间,然后利用委托的方式去操控主程序的时间编辑框,输出时间。代码如下://使用代理委托【2】privatedelegatevoidShowNowTime(StringSystemTime);///<summary>/////创建时间进程函数///</summary>privatevoidTime(){while(true){StringSystemTime;SystemTime=DateTime.Now.ToString();//获取系统时间AddTime(SystemTime);Thread.Sleep(1000);//每秒刷新一次}}//在编辑框显示时间privatevoidAddTime(StringSystemTime){if(this.InvokeRequired){ShowNowTimeSNT=newShowNowTime(AddTime);this.Invoke(SNT,SystemTime);}else{textBox1.Clear();textBox1.Text=SystemTime;}}1.2背景歌曲《小烦恼没什么大不了》实现方式:利用C#自带media命名空间,播放器自主创建播放线程1定义全局变量System.Media.SoundPlayersp=newSoundPlayer();2获取设置歌曲的相对路径stringstr=Environment.CurrentDirectory;sp.SoundLocation=str+@"\\Music.wav";3播放按钮设置sp.Play();4停止按钮设置sp.Stop();1.3看图片功能介绍:主程序功能实现方式:利用显示图片控件,通过调取windows自带的查找文件的线程选取图片,使之完全显示在编辑框中。1看图片按键设置【3】privatevoidbutton5_Click(objectsender,EventArgse){stringstrInMage;//初始化路径为C盘OpenFileDialogopenfilediglog=newOpenFileDialog();openfilediglog.InitialDirectory="c:";openfilediglog.Filter="ImageFiles(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|Allfiles(*.*)|*.*";if(openfilediglog.ShowDialog()==DialogResult.OK){//找到该图片名字strInMage=openfilediglog.FileName;if(File.Exists(strInMage)){pictureBox1.ImageLocation=strInMage;}}}}1.4开始线程设计:按下按钮后启动两个子界面的线程。具体实现方式:在主程序中创建两个线程以及其入口函数,在入口函数中调用已经编写好的两个界面。代码:1创建线程并挂起Threadthread1=newThread(First);Threadthread2=newThread(Second);2两个入口函数注意:由于两个线程采取的是全局定义,所以入口函数需要定义为静态staticvoidFirst(){Form2fm=newForm2();while(B1){fm.ShowDialog();Thread.Sleep(20000);}}staticvoidSecond(){Form3fm=newForm3();while(B2){fm.ShowDialog();Thread.Sleep(20000);}}2输出素数界面的设计2.1实现功能1用户输入一个小于一千万的数据n2程序输出2-n的所有素数2.2关键函数设计预设计:将所有的素数利用bool数组prime存储下来,prime[i]==true,表明i是素数筛选函数代码://初始化为全部是truefor(inti=0;i<10000000;i++)prime[i]=true;prime[1]=false;//开始筛选for(inti=2;i*i<10000000;i++)if(prime[i]==true)for(intj=i*i;j<10000000;j+=i)prime[j]=false;1确定函数功能:按下确定键,输出框开始输出素数,并且不允许修改输入数据代码:Stringstr=textBox2.Text;intn=Convert.ToInt32(str);Start.Enabled=false;end.Enabled=true;textBox2.Enabled=false;for(inti=2;i<n;i++){if(prime[i]==true)textBox1.AppendText(""+Convert.ToString(i));}textBox1.Enabled=true;2结束函数功能:允许修改输入数据代码:Start.Enabled=true;end.Enabled=false;textBox2.Enabled=true;3比大小游戏界面设计3.1实现功能1先给甲分配一个1->999的随机数2给乙分配一个1->999的随机数两者比较,输出结果。3.2关键函数设计1甲开始(按钮)功能:实现给甲分配一个随机数代码:privatevoidbutton1_Click_1(objectsender,EventArgse){R1=ran.Next(1,1000);button1.Enabled=false;textBox1.Text=Convert.ToString(R1);}2乙开始(按钮)功能:实现给乙分配一个随机数代码:同甲增加:比较的代码实现if(R1>R2)MessageBox.Show("甲方获胜","比赛结果");elseif(R1<R2)MessageBox.Show("乙方获胜","比赛结果");elseMessageBox.Show("平局","比赛结果");使用说明1主界面使用说明1听音乐功能按下播放键,播放音乐,停止键停止音乐。2看图片功能按下看图片键进入图片选择界面,选择图片,在图片框中浏览。3看当前系统时间功能开启两个新线程按下开始线程按钮,进入两个新界面。2输出素数界面使用说明1在输入数据框中输入一个数据(小于10000000的整数)2点击开始按钮,在输出框中观察数据,等待结束3输出停止后,按下停止按钮,方可再次输入数据。3比大小游戏界面使用说明1必须先按下甲开始按钮,甲方的输出栏中观察甲的数据按下乙开始按钮,在乙方的输出栏中观察乙的数据结果自动输出按照提示关闭消息盒子操作注意的地方1要退出主程序,如果有其他两个界面存在时,必须先点击关闭线程,再关闭其他两个界面。课程设计收获通过该次课程设计,我明白了进程和

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论