C# winform在线程中给控件赋值

来源:互联网 发布:少女前线g36c数据 编辑:程序博客网 时间:2024/06/05 02:00

C# winform在线程中给控件赋值确定要报错,这要是打印日志什么的就很烦,好在用代理就可以解决这个问题

public delegate void AppendStringCallback(string text);        public static event AppendStringCallback appendStringCtrl;        public delegate void AppendObjectCallback(object[] obj);        public static event AppendObjectCallback appendObjectCtrl;

        private void Form1_Load(object sender, EventArgs e)        {            Connect();            label1.Text = strOpen;            appendStringCtrl = new AppendStringCallback(AppendString);            appendObjectCtrl = new AppendObjectCallback(AppendObject);        }

        //绑定数据        private void BandData(string curTime, string mobile, string res)        {            if (dgvCount == 1000)            {                dgvCount = 1;                dgv.Rows.Clear();            }            object[] obj = new object[4];            obj[0] = dgvCount;            obj[1] = curTime;            obj[2] = mobile;            obj[3] = res;            //if (res == "1")            //    obj[3] = "成功";            //else            //    obj[3] = "失败";            //dgv.Rows.Add(obj);            appendObjectCtrl(obj);            dgvCount++;        }        private void AppendString(string text)        {            if (this.rtxtMes.InvokeRequired)            {                this.rtxtMes.BeginInvoke(new AppendStringCallback(AppendString), new object[] { text });            }            else            {                SetMessage(text);            }        }        private void AppendObject(object[] obj)        {            if (this.dgv.InvokeRequired)            {                this.dgv.BeginInvoke(new AppendObjectCallback(AppendObject), new object[] { obj });            }            else            {                dgv.Rows.Add(obj);            }        }

这要调用就没有什么问题了

        private void button1_Click(object sender, EventArgs e)        {            Thread objThread = new Thread(new ThreadStart(delegate            {                BandData(DateTime.Now.ToString(), "152019666666", "哈哈");                appendStringCtrl("sefsef");            }));            objThread.Start();        }



1 0
原创粉丝点击