线程间操作无效: 从不是创建控件“xxx”的线程访问它

线程间操作无效: 从不是创建控件“xxx”的线程访问它

在WinForm中,直接使用自己创建的线程去使用窗体中的控件,是不安全的,不允许这样操作,以用委托的方式进行处理:


        delegate void WriteLabelText(string str, Color color);

        private void showSqlConnResult(string msg, Color color)
        {
            this.labelSqlConnStatus.Text = msg;
            this.labelSqlConnStatus.ForeColor = color;
            this.buttonTestSqlConn.Enabled = true;
        }

        private void threadTestConn()
        {
            string result = "连接数据库成功。";
            Color color = Color.Green;
            System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(this.textBoxSqlConnString.Text.Trim());
            try
            {
                conn.Open();
                conn.Close();
            }
            catch (Exception E)
            {
                result = E.Message;
                color = Color.Red;
            }
            WriteLabelText wt = new WriteLabelText(showSqlConnResult);
            this.Invoke(wt, result, color);
        }

        private void buttonTestSqlConn_Click(object sender, EventArgs e)
        {
            this.buttonTestSqlConn.Enabled = false;
            this.labelSqlConnStatus.ForeColor = Color.Blue;
            this.labelSqlConnStatus.Text = "正在测试连接数据库……";
            System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(this.threadTestConn));
            thread.Start();
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值