黑马程序员—— c#中的多线程
2014-02-15 16:28
211 查看
为什么要用多线程呢?
1. 让计算机“同时”做多件事情,节约时间
2. 后台运行程序,提高程序的运行效率,也不会使主界面出现无响应的情况
3. 多线程可以让一个程序“同时”处理多个事件
4. 计算机cpu大部分时间处于空闲状态,浪费了cpu资源。
.net中如何让实现多线程的呢?
线程肯定也是要执行一段代码的。所以要产生一个线程,必须先为该线程写一个方法,这个方法中的代码就是该线程运行所要执行的代码(找个人来做一件事)。线程启动时,通过委托调用该方法。线程启动时,调用传过来的委托。委托就会执行相应的方法,实现线程执行方法。
namespace _02多线程
{
public
partial class
Form1 : Form
{
publicForm1()
{
InitializeComponent();
TextBox.CheckForIllegalCrossThreadCalls=false;
}
privatevoid button2_Click(objectsender,EventArgs e)
{
//创建线程对象,传入线程要执行的方法
ThreadthreadFirst =new
Thread(counttime);
//将线程设¨置为后台线程¨(当所有前台线程结束后,后台线程会自动退出)
threadFirst.IsBackground = true;
//启动线程执行方法
threadFirst.Start();
}
voidcounttime()
{
for(int i = 0; i < 999999999; i++)
{
}
MessageBox.Show("循环完ª毕?");
}
//以下代码验证了单线程带来的缺点
privatevoid button1_Click(objectsender,EventArgs e)
{
counttime();
}
void changeTxt()
{
for(int i = 0; i <1000; i++)
{
inta =
int.Parse(textBox1.Text);
Console.WriteLine(Thread.CurrentThread.Name +",a=" + a);
a++;
textBox1.Text = a.ToString();
}
}
//下面代码表现了多线程方法重入问题
privatevoid button3_Click(objectsender,EventArgs e)
{
Threadthread1 =
new Thread(changeTxt);
thread1.Name = "t1";
thread1.IsBackground = true;
thread1.Start();
Threadthread2 =
new Thread(changeTxt);
thread2.Name = "t2";
thread2.IsBackground = true;
thread2.Start();
}
}
}
1. 让计算机“同时”做多件事情,节约时间
2. 后台运行程序,提高程序的运行效率,也不会使主界面出现无响应的情况
3. 多线程可以让一个程序“同时”处理多个事件
4. 计算机cpu大部分时间处于空闲状态,浪费了cpu资源。
.net中如何让实现多线程的呢?
线程肯定也是要执行一段代码的。所以要产生一个线程,必须先为该线程写一个方法,这个方法中的代码就是该线程运行所要执行的代码(找个人来做一件事)。线程启动时,通过委托调用该方法。线程启动时,调用传过来的委托。委托就会执行相应的方法,实现线程执行方法。
namespace _02多线程
{
public
partial class
Form1 : Form
{
publicForm1()
{
InitializeComponent();
TextBox.CheckForIllegalCrossThreadCalls=false;
}
privatevoid button2_Click(objectsender,EventArgs e)
{
//创建线程对象,传入线程要执行的方法
ThreadthreadFirst =new
Thread(counttime);
//将线程设¨置为后台线程¨(当所有前台线程结束后,后台线程会自动退出)
threadFirst.IsBackground = true;
//启动线程执行方法
threadFirst.Start();
}
voidcounttime()
{
for(int i = 0; i < 999999999; i++)
{
}
MessageBox.Show("循环完ª毕?");
}
//以下代码验证了单线程带来的缺点
privatevoid button1_Click(objectsender,EventArgs e)
{
counttime();
}
void changeTxt()
{
for(int i = 0; i <1000; i++)
{
inta =
int.Parse(textBox1.Text);
Console.WriteLine(Thread.CurrentThread.Name +",a=" + a);
a++;
textBox1.Text = a.ToString();
}
}
//下面代码表现了多线程方法重入问题
privatevoid button3_Click(objectsender,EventArgs e)
{
Threadthread1 =
new Thread(changeTxt);
thread1.Name = "t1";
thread1.IsBackground = true;
thread1.Start();
Threadthread2 =
new Thread(changeTxt);
thread2.Name = "t2";
thread2.IsBackground = true;
thread2.Start();
}
}
}
相关文章推荐
- 黑马程序员—学习笔记之C#多线程
- 黑马程序员---C#多线程基础笔记
- 黑马程序员————————C#基础知识之多线程
- C#综合揭秘——细说多线程(下)
- C# 线程手册 第五章 扩展多线程应用程序 在C#中使用线程池
- 【ASP.net文档】用C#实现HTTP协议下的多线程文件传输
- 黑马程序员之c#学习笔记:C#学习小总结
- 黑马程序员:C#变量基础
- C#多线程学习(六) 互斥对象(转载系列)——继续搜索引擎研究
- c#通用多线程基类,以队列形式
- C#实现多线程写入同一个文件的方法
- C# 多线程操作样例
- 用C#实现HTTP协议下的多线程文件传输
- 黑马程序员——————————多线程
- 黑马程序员——多线程(概述)
- 多线程--C#利用多线程实现消费者和生产者模式
- [转]C#多线程学习(六) 互斥对象
- C#多线程学习(五) 多线程的自动管理(定时器) (转载)
- 黑马程序员--Java基础学习(多线程)第十一天
- C#中关于多线程的问题