首页 C#多线程笔记实例

C#多线程笔记实例

举报
开通vip

C#多线程笔记实例C#多线程 何谓进程?进程是程序文件的内存实例。 Windows是一个多任务的系统,如果你使用的是windows 2000及其以上版本,你可以通过任务管理器查看当前系统运行的程序和进程. 什么是进程呢?当一个程序开始运行时,它就是一个进程,进程所指包括运行中的程序序使用到的内存和系统资源。 进程 进程,说通俗点,就是指运行中的程序,程序是“死”的,一旦运行进入内存, 就“活”了,即程序的内存实例------进程。 而一个进程又是由多个线程所组成的,线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序...

C#多线程笔记实例
C#多线程 何谓进程?进程是程序文件的内存实例。 Windows是一个多任务的系统,如果你使用的是windows 2000及其以上版本,你可以通过任务管理器查看当前系统运行的程序和进程. 什么是进程呢?当一个程序开始运行时,它就是一个进程,进程所指包括运行中的程序序使用到的内存和系统资源。 进程 进程,说通俗点,就是指运行中的程序,程序是“死”的,一旦运行进入内存, 就“活”了,即程序的内存实例------进程。 而一个进程又是由多个线程所组成的,线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。浏览器就是一个很好的多线程的例子,在浏览器中你可以在下载JAVA小应用程序或图象的同时滚动页面,在访问新页面时,播放动画和声音,打印文件等。 下面看一个实例: 要求:单击“Star”按钮,在左边的ListBok控件中添加1万个项,分别是Item n(n=0,1,2,…..9999),单击“Look”按钮弹出对话框,显示ListBox里面的项的总是。 就所学知识而言,很容易会写如下代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace MutiThread_Test { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnStart_Click(object sender, EventArgs e) { for (int index = 0; index < 10000; index++) { this.lstTest.Items.Add(string.Format("Item {0}", index)); } } private void btnLook_Click(object sender, EventArgs e) { MessageBox.Show(string.Format("ListBox中一共有{0}项", this.lstTest.Items.Count)); } } } 但是会发现两个问题:其一,由于添加的项比较多,要等待一段时间(具体时间更加计算机配置情况),项是添加完成后才全部显示出来的,而不是一个一个显示出来的: 其二:在ListBox项显示出来之前,单击“Look”按钮会发现不起作用,甚至死机,因为在单线程中,添加项的线程还没有完成,Item的个数一直在自增,是不确定的。 下面,改由多线程做,达到预期效果:添加一个窗体Form2,和Form1控件一样: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; //多线程引入命名空间 using System.Threading; namespace MutiThread_Test { public partial class Form2 : Form { public Form2() { InitializeComponent(); } private void btnStart_Click(object sender, EventArgs e) { ThreadStart threadStart = new ThreadStart(AddItem); //声明一个线程 Thread thread = new Thread(threadStart); //启动线程 thread.Start(); } private void AddItem() { for (int index = 0; index < 100000; index++) { this.lstTest.Items.Add(string.Format("Item {0}", index)); } } private void btnLook_Click(object sender, EventArgs e) { MessageBox.Show(string.Format("ListBox中一共有{0}项", this.lstTest.Items.Count)); } } } 把启动窗体改为Form2: using System; using System.Collections.Generic; using System.Windows.Forms; namespace MutiThread_Test { static class Program { /// /// 应用程序的主入口点。 /// [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form2()); } } } 注意这时候不要按F5调式,而是不调试直接运行: 运行结果如下: 这时和上一个不一样,发现Item n 是动态一个一个的加上去的,而不是全部在内存中添加完成后显示出来。而且,随时可以单击“Look”按钮,显示ListBox中的项数: 可以到我的CSDN博客下载地址http://sndnnlfhvk.download.csdn.net/
本文档为【C#多线程笔记实例】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_430457
暂无简介~
格式:doc
大小:176KB
软件:Word
页数:8
分类:互联网
上传时间:2011-11-01
浏览量:27