首先我要提一点
,
关于线程的基础知识
,
一个程序
,
即一个进
程
,
可以有很多个线程
,
当然
,
至少要有一个线程
,
即主线程
.
相
信大家都知道多线程的好处吧
,
举个书上的例子
吧
,Windows
在复制文件的时候
,
有个动画
,
是在复制文件过
程中进行的
,
也就是一边复制文件
,
一边播放动画
,
这个就是很
简单的多线程
,
如果没有动画
,
复制一个大文件的时候
,
我们知
道计算机是死机了
,
还是仍然在复制呢
???
多线程就很好的
解决了这个问题
.
懂了吧
,
恩
,
很好
!!
那么
,
我们就开始吧
!
首先
,
我们写个简单的单线程程序
,
也就是只有程序自
己创建的那个主线程
,
没有使用多线程
.
创建一个新工程
,
向窗口添加一个
label
命名为
label1;
我们
要让程序运行时
label1
就显示一个数字
,
假设为
100;
通常我
们会直接在窗口加载事件中写
label1.Text = "100";
这样
,
运
行
,label1
果然显示了
100;
代码如下
:(
例
1)
using System;
using System.Windows.Forms;
namespace ThreadTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender,
EventArgs e)
{
label1.Text = "100";
}
}
}
很简单吧
,
看懂了吗
??
什么
,
没有
,
啊
~~~
神啊
~~~
救救我吧
,
那请你在翻书
,
把最最最
最最基础的书翻出来看看里面的最最最最最简单例子
(
以后
不要说我认识你
)
好了,看懂的朋友继续往下看:
我们现在要将程序稍稍改动一下,添加一个
Button,
命名为
button1,
我们要在按下
button1
后,将
lable1
的
text
从
0
显示到
100,
那么,
我们需要添加
button1
的
Click
事件
,
在
click
事件内
写入循环显示
0
到
100.
代码如下
:(
例
2)
using System;
using System.Windows.Forms;
namespace ThreadTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender,
EventArgs e)
{
label1.Text = "0";
}
private void button1_Click(object sender,
EventArgs e)
{
for(int i=0;i<101;i++)
{
label1.Text = i.ToString();
}
}
}
}
运行一下看看
,
按一下
button1
,结果是我们一下就看到了
100
,并没有看到
0~100
的过程,为什么呢?
呵呵,
因为你的处理器速度太快了,
就只能看到最后的结果,
那么,怎样才能看到中间过程呢?
(
等一下再讲
)
我们先用函数的方式来实现上面的功能
写个名为
run
的函数吧:
private void run()
{
for(int i=0;i<101;i++)
{
label1.Text = i.ToString();
}
}
这样就可以直接调用
run
函数实现功能了,
而不用在事件函
数内写代码。
(
这样做是有好处的
)
整个代码如下:
(
例
3)
using System;
using System.Windows.Forms;
namespace ThreadTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender,
EventArgs e)
{
label1.Text = "0";
}