未将对象引用设置到对象的实例

本文探讨了一位开发者在使用.NET程序连接二维码扫描仪并尝试更新dataGridView1时遇到的‘未将对象引用设置到对象的实例’错误。问题根源在于多线程环境下对UI组件操作不当。解决方案是通过Invoke方法确保在主线程中更新UI。作者强调,当涉及到多个硬件连接和多线程时,应警惕此类问题。
摘要由CSDN通过智能技术生成

可能存的的基本问题https://blog.csdn.net/weixin_30413739/article/details/95082187

下面我还要补充一点是我才碰见的

我的任务是用.net程序连接二维码扫描仪,识别扫描仪并返回相应的结果,再给dataGridView1赋值的时候就开始报错,调试的时候也没有发现问题,代码写的也没问题,也没有空值,不知道为什么会报“未将对象引用设置到对象的实例”,百思不得其解,后来通过大神指点才发现,是多线程的问题,加上invoke就好了!大神最后告诉我:“程序连接多个硬件时很有可能遇到多线程问题,遇到多线程问题你就 无脑invoke 就好了”

报错代码


            DataTable ycDt = webService.getdata(sys_encrypt, sys_encrypt2, ERPID, getYcSQL);
            dataGridView1.DataSource = ycDt;

改进代码

dataGridView1.Invoke(new MethodInvoker(delegate ()
            {
                
                }
                DataTable ycDt = webService.getdata(sys_encrypt, sys_encrypt2, ERPID, getYcSQL);
                dataGridView1.DataSource = ycDt;
)}}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值