当前位置:K88软件开发文章中心编程语言AspAsp01 → 文章内容

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

减小字体 增大字体 作者:佚名     来源:asp编程网  发布时间:2018-12-30 8:34:20

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

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

第一个实例(把窗口上的label上文字改成100):
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,循环显示0动态变化到100数字):
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,没有看到0~100动态变化,就直接到了100了。
原因:因为你的处理器速度太快了,就只能看到最后的结果,那么,怎样才能看到中间过程呢?
我们先用函数的方式来实现上面的功能
写个名为run的函数吧:
private void run()
{ for(int i=0
i<
101
i++)
{ label1.Text = i.ToString()
}}
(鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)

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

整个代码如下:

第三个实例(使用函数

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)
{ run()
//调用run函数 } private void run()
{ for(int i=0
i<
101
i++)
{ label1.Text = i.ToString()
} } }}
(鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)

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

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

using System
using System.Windows.Forms
namespace ThreadTest
{ public partial class Form1 : Form
{ int i
//全局变量i public Form1()
{ InitializeComponent()
} private void Form1_Load(object sender, EventArgs e)
{ label1.Text = "0"
} private void button1_Click(object sender, EventArgs e)
{ run()
} private void run()
{ i = 0
timer1.Interval = 1000
//设置timer1的间隔时间 timer1.Start()
//启动timer1 } private void timer1_Tick(object sender, EventArgs e) //timer1的Tick事件
{ i++
if (i >
100)
{ timer1.Stop()
} label1.Text = i.ToString()
} }}
(鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)

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

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


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