一直想弄清楚线程是如何工作的,一直在找相关的实例都没有找到,没有找到容易看懂的实例。今天终于找到一个,觉得很简单,把它转到这里来分享一下。
要实现的效果是:
点击按纽,窗口上的label上出现1~100数字的变化。
窗口上有两个控键,一个label,一个button。
第一个实例(把窗口上的label上文字改成100):
02 | using System.Windows.Forms; |
06 | public partial class Form1 : Form |
10 | InitializeComponent(); |
13 | private void Form1_Load( object sender, EventArgs e) |
(鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)
这个是最简单的实例,应该不难看懂。
第二个实例(点击button,循环显示0动态变化到100数字):
02 | using System.Windows.Forms; |
06 | public partial class Form1 : Form |
10 | InitializeComponent(); |
13 | private void Form1_Load( object sender, EventArgs e) |
18 | private void button1_Click( object sender, EventArgs e) |
20 | for ( int i=0;i<101;i++) |
22 | label1.Text = i.ToString(); |
(鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)
运行一下,点击一下button1,没有看到0~100动态变化,就直接到了100了。
原因:因为你的处理器速度太快了,就只能看到最后的结果,那么,怎样才能看到中间过程呢?
我们先用函数的方式来实现上面的功能
写个名为run的函数吧:
5 | label1.Text = i.ToString(); |
(鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)
这样就可以直接调用run函数实现功能了,而不用在事件函数内写代码。(这样做是有好处的)
整个代码如下:
第三个实例(使用函数)
02 | using System.Windows.Forms; |
06 | public partial class Form1 : Form |
10 | InitializeComponent(); |
13 | private void Form1_Load( object sender, EventArgs e) |
18 | private void button1_Click( object sender, EventArgs e) |
25 | for ( int i=0;i<101;i++) |
27 | label1.Text = i.ToString(); |
(鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)
这里就需要在循环过程中加延时了,假定我们每隔1s的延时,lable1的值增加1。
方法有很多,我们就用一个timer来实现延时。
添加一个timer, 命名为timer1,在timer1的tick事件内添加语句,改变label1的值。(Tick事件是每经过指定时间间隔后被触发)
第四个实例(使用timer),实现每隔1s的延时,lable1的值增加1,以达到动态变化的效果
02 | using System.Windows.Forms; |
06 | public partial class Form1 : Form |
12 | InitializeComponent(); |
15 | private void Form1_Load( object sender, EventArgs e) |
20 | private void button1_Click( object sender, EventArgs e) |
28 | timer1.Interval = 1000; //设置timer1的间隔时间 |
29 | timer1.Start(); //启动timer1 |
32 | private void timer1_Tick( object sender, EventArgs e) //timer1的Tick事件 |
39 | label1.Text = i.ToString(); |
(鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)
同样的,我们运行一下,看看结果,很好,我们能够看到0~100循环的过程了。
以上是我们平常的做法,让label动态变化的效果,下面我们开始使用线程来实现上面的功能。
更多关于asp.net C# 线程 的教程
|