C# 在线程中访问控件

编程入门 行业动态 更新时间:2024-10-24 02:00:33

C#  在<a href=https://www.elefans.com/category/jswz/34/1771240.html style=线程中访问控件"/>

C# 在线程中访问控件

C#  在线程中访问控件,会抛出异常
错误原因:线程间操作无效,从不是创建控件的线程访问此控件。


解决方法:
利用方法:Control.Invoke (Delegate) 
详情:(v=vs.110).aspx


思路:
1、定义一个委托类型
2、声明一个此委托类型的 变量
3、在委托调用的方法中实现  访问控件


如下:
1、public void delegate SetControl();
2、public SetControl setControlDelegate;
3、setControlDelegate = new SetControl(SetControlMethod);
4、在线程的回调函数中,调用控件的invoke方法。
注:SetControlMethod 方法需要自己定义,里面执行对控件的操作。
例:
向Form中添加listbox,button控件


namespace ThreadFm1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


        public delegate void SetControl();
        public SetControl setControlDelegate;


        public void SetControlMethod()
        {
            for (int i = 0; i < 6; i++)
            {
                listBox1.Items.Add("items " + i.ToString() + "= ");
            }
        }


        private void Form1_Load(object sender, EventArgs e)
        {
            setControlDelegate = new SetControl(SetControlMethod);
        }


        private void button1_Click(object sender, EventArgs e)
        {
            Thread myThread = new Thread(ThreadFunction);
            myThread.Start();
        }


        public void ThreadFunction()
        {
            listBox1.Invoke(setControlDelegate);
        }
    }
}

更多推荐

C# 在线程中访问控件

本文发布于:2024-03-23 14:37:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1739337.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:线程   控件

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!