分享

C#线程开发:winform简单的C#线程开发实例

 ThinkTank_引擎 2016-05-01
 一直想弄清楚线程是如何工作的,一直在找相关的实例都没有找到,没有找到容易看懂的实例。今天终于找到一个,觉得很简单,把它转到这里来分享一下。
要实现的效果是:
点击按纽,窗口上的label上出现1~100数字的变化。

窗口上有两个控键,一个label,一个button。

第一个实例(把窗口上的label上文字改成100):
01using System;
02using System.Windows.Forms;
03 
04namespace ThreadTest
05{
06    public partial class Form1 : Form
07    {
08        public Form1()
09        {
10            InitializeComponent();
11        }
12 
13        private void Form1_Load(object sender, EventArgs e)
14        {
15            label1.Text = "100";
16        }
17    }
18}
(鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)

这个是最简单的实例,应该不难看懂。

第二个实例(点击button,循环显示0动态变化到100数字):
01using System;
02using System.Windows.Forms;
03 
04namespace ThreadTest
05{
06    public partial class Form1 : Form
07    {
08        public Form1()
09        {
10            InitializeComponent();
11        }
12 
13        private void Form1_Load(object sender, EventArgs e)
14        {
15            label1.Text = "0";
16        }
17 
18        private void button1_Click(object sender, EventArgs e)
19        {
20            for(int i=0;i<101;i++)
21            {
22                label1.Text = i.ToString();
23            }
24        }
25    }
26}
(鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)
运行一下,点击一下button1,没有看到0~100动态变化,就直接到了100了。
原因:因为你的处理器速度太快了,就只能看到最后的结果,那么,怎样才能看到中间过程呢?
我们先用函数的方式来实现上面的功能
写个名为run的函数吧:
1private void run()
2{
3    for(int i=0;i<101;i++)
4    {
5        label1.Text = i.ToString();
6    }
7}
(鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)

这样就可以直接调用run函数实现功能了,而不用在事件函数内写代码。(这样做是有好处的)

整个代码如下:

第三个实例(使用函数

01using System;
02using System.Windows.Forms;
03 
04namespace ThreadTest
05{
06    public partial class Form1 : Form
07    {
08        public Form1()
09        {
10            InitializeComponent();
11        }
12 
13        private void Form1_Load(object sender, EventArgs e)
14        {
15            label1.Text = "0";
16        }
17 
18        private void button1_Click(object sender, EventArgs e)
19        {
20            run();    //调用run函数
21        }
22 
23        private void run()
24        {
25            for(int i=0;i<101;i++)
26            {
27                label1.Text = i.ToString();
28            }
29        }
30    }
31}
(鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)

这里就需要在循环过程中加延时了,假定我们每隔1s的延时,lable1的值增加1。
方法有很多,我们就用一个timer来实现延时。
添加一个timer, 命名为timer1,在timer1的tick事件内添加语句,改变label1的值。(Tick事件是每经过指定时间间隔后被触发)

第四个实例(使用timer),实现每隔1s的延时,lable1的值增加1,以达到动态变化的效果

01using System;
02using System.Windows.Forms;
03 
04namespace ThreadTest
05{
06    public partial class Form1 : Form
07    {
08        int i;          //全局变量i
09 
10        public Form1()
11        {
12            InitializeComponent();
13        }
14 
15        private void Form1_Load(object sender, EventArgs e)
16        {
17            label1.Text = "0";
18        }
19 
20        private void button1_Click(object sender, EventArgs e)
21        {
22            run();
23        }
24 
25        private void run()
26        {
27            i = 0;
28            timer1.Interval = 1000; //设置timer1的间隔时间
29            timer1.Start(); //启动timer1
30        }
31 
32        private void timer1_Tick(object sender, EventArgs e) //timer1的Tick事件
33        {
34            i++;
35            if (i > 100)
36            {
37                timer1.Stop();
38            }
39            label1.Text = i.ToString();
40        }
41    }
42}
(鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)

 同样的,我们运行一下,看看结果,很好,我们能够看到0~100循环的过程了。

以上是我们平常的做法,让label动态变化的效果,下面我们开始使用线程来实现上面的功能。


更多关于asp.net C# 线程 的教程

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多