调用不是本线程创建的windows控件会报错

来源:互联网 发布:新速特软件安卓版 编辑:程序博客网 时间:2024/05/17 03:28
应该使用控件的InvokeRequired属性来判断是否需要Invoke,如果是则使用控件Invoke的方法来执行一个委托.
类似如下:
    public partial class Form1 : Form
    {
        private delegate void myDel();
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Thread mT = new Thread(new ThreadStart(myThread));           
            mT.Start();
        }
        private void myThread()
        {
            int i=0;
            while (i<5)
            {
                if (this.listBox1.InvokeRequired)
                {
                    Invoke(new myDel(MyMethod));
                }
                i++;
               
            }
        }
        private void MyMethod()
        {
            listBox1.Items.Add(DateTime.Now.ToString());
        }
    }
原创粉丝点击