C#跨线程访问控件

网友投稿 263 2022-09-04

C#跨线程访问控件

线程实现两个lable标签显示:

public partial class FrmThreadControl : Form { public FrmThreadControl() { InitializeComponent(); } private void btnExecute1_Click(object sender, EventArgs e) { int a = 0; Thread objThread1 = new Thread(delegate() { for (int i = 1; i <= 20; i++) { a += i; if (this.lblResult1.InvokeRequired)//判断是否调用Invoke方法 { this.lblResult1.Invoke(new Action(s => { this.lblResult1.Text = s; }), a.ToString()); } Thread.Sleep(200); } }); objThread1.IsBackground = true;//设置为后台线程(通常都要这样设置) objThread1.Start(); } private void btnExecute2_Click(object sender, EventArgs e) { int a = 0; Thread objThread2 = new Thread(() => { for (int i = 1; i <= 50; i++) { a += i; if (this.lblResult2.InvokeRequired)//判断是否调用Invoke方法 { this.lblResult2.Invoke(new Action(s => { this.lblResult2.Text = s; }), a.ToString()); } Thread.Sleep(100); } }); objThread2.IsBackground = true; objThread2.Start(); } }

异步实现计算方法:

多线程Thread的基础使用:

public partial class FrmThead : Form { public FrmThead() { InitializeComponent(); } //执行任务1 private void btnExecute1_Click(object sender, EventArgs e) { int a = 0; //ThreadStart 委托定义:public delegate void ThreadStart() Thread objThread1 = new Thread(delegate() { for (int i = 1; i <= 20; i++) { a += i; Console.WriteLine(a + " "); Thread.Sleep(500); } }); objThread1.IsBackground = true;//设置为后台线程(通常都要这样设置) objThread1.Start(); } //执行任务2 private void btnExecute2_Click(object sender, EventArgs e) { Thread objThread2 = new Thread(() => { for (int i = 1; i <= 50; i++) { Console.WriteLine("---------------a" + i + "----------------"); Thread.Sleep(100); } }); objThread2.IsBackground = true;//设置为后台线程(通常都要这样设置) objThread2.Start(); } }}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:中国女排队员朱婷报案,此前有网民虚构其谣言!
下一篇:小米11系列“翻车”被骂上热搜,雷军拿什么拯救高端路线?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~