C#跨线程访问控件 发表于 2020-06-16 | 分类于 编程爱好 | 评论数: | 阅读次数: 跨线程访问控件,主要用到控件的属性判断InvokeRequired是否为true,为true则为其他线程创建。 123456789101112131415161718192021222324252627282930313233343536373839404142434445using System;using System.Windows.Forms;using System.Threading;namespace 跨线程控件访问{ public partial class Form1 : Form { public Form1() { InitializeComponent(); StartPosition = FormStartPosition.CenterParent; } private void button1_Click(object sender, EventArgs e) { Thread thread1 = new Thread(() => { if (lbl1.InvokeRequired) { //判断是否调动Invoke方法, 如果为 true 则是其他方法创建。 for (int i = 0; i <= 50; i++) { //Invoke()方法的第一个参数是返回值为void的委托,第二个是给委托对应方法传递的参数 lbl1.Invoke(new Action<string>(s => lbl1.Text = i.ToString()), i.ToString()); Thread.Sleep(50); } } }); thread1.IsBackground = true; thread1.Start(); } private void button2_Click(object sender, EventArgs e) { Thread thread2 = new Thread(() => { if (lbl2.InvokeRequired) { //判断是否调动Invoke方法, 如果为 true 则是其他方法创建。 for (int i = 0; i <= 50; i++) { //Invoke()方法的第一个参数是返回值为void的委托,第二个是给委托对应方法传递的参数 lbl1.Invoke(new Action<string>(s => lbl2.Text = i.ToString()), i.ToString()); Thread.Sleep(50); } } }); thread2.IsBackground = true; thread2.Start(); } }} 输出: 感谢支持! 打赏 微信支付 支付宝 本文作者: huvjie 本文链接: https://blog.huvjie.com/2020/06/16/200616N03/ 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!