为什么要用多线程呢?
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();
}
}
}