这个问题是关于C#线程内部操作datagridview 使数据重新加载实现向上跑动!!! 200

,具体就是如果用按钮操作就可以,但是放到线程里面与运行就会出现未将对象引用到实例的异常,并且,datagridview区域出现红色叉号,图就不发了,设计到公司机密以及隐私... ,具体就是如果用按钮操作就可以,但是放到线程里面与运行就会出现未将对象引用到实例的异常,并且,datagridview区域出现红色叉号,图就不发了,设计到公司机密以及隐私,觉得可以解决的,留言!!!
是帮我解决哦 。。。不是说一堆我听不懂的 发一些我看不懂的 。。
展开
 我来答
FabKiller
2014-01-17 · TA获得超过586个赞
知道小有建树答主
回答量:676
采纳率:0%
帮助的人:484万
展开全部

由于你没给更多的数据,我只能给你以下代码,你自己试试吧。

(new Thread(new ThreadStart(() =>
{
    DataTable dt = new DataTable();
    dt.Columns.Add("A");
    dt.Rows.Add("A1");
    if (dataGridView1.InvokeRequired)
    {
        dataGridView1.BeginInvoke(new MethodInvoker(() =>
        {
            dataGridView1.DataSource = dt;
        }));
    }
    else
    {
        dataGridView1.DataSource = dt;
    }
}))).Start();

 

PS:简便写法需要framework>=3.5

更多追问追答
追问
怎么联系呢  我折代码发上来超出范围了  。
追答
你可以回帖的时候,传附件!可以从本地也可以从网盘!
_请开始你的表演
2014-01-17 · 超过71用户采纳过TA的回答
知道小有建树答主
回答量:298
采纳率:0%
帮助的人:176万
展开全部
CheckForIllegalCrossThreadCalls = false;
CheckForIllegalCrossThreadCalls在.net1.x中默认是false,也就是不检查,.net2.0和3.x默认是true
也就是说你也可以直接用.net 1.x
死穴:安全性 CheckForIllegalCrossThreadCalls容许子线呈随时更新ui,在同一个test函数体内,不能保证自身事务的一致性。给label1付了值 一回头,就已经被别人改了,这和超市的踩踏事件的后果一样严重。 当然你可以自己加锁,用信号量,这样还不如直接使用Invoke了,你只是又把别人做好的事情做了一遍。
如果你觉的你的应用不会考虑在写入ui的同时来读取ui,而倾向使用CheckForIllegalCrossThreadCalls来追求效率的话,也是不恰当的做法。 首先CheckForIllegalCrossThreadCalls并不能让效率发生本质的变化。 其次需求永远是变化的,现在不考虑不等于以后不会碰到 听从ms的引导。否则以后要在高版本的.net framework中移植代码的时候需要花费数倍的人工。
更多追问追答
追问
http://pan.baidu.com/s/1hqBRdaO  代码在这里 。
追答
加上了不好使么。?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
摩羯眼睛会勾魂
2014-01-17 · 超过45用户采纳过TA的回答
知道答主
回答量:81
采纳率:0%
帮助的人:112万
展开全部
多线程更新窗体控件推荐使用委托,可以参考这篇文章 http://www.cnblogs.com/hnfxs/p/3192009.html
如果嫌前面的内容麻烦就直接看最后的那个方法就行了。
更多追问追答
追问
看不懂 刚毕业  。
追答
看不懂就多看几次,不是所有的问题都有现成的代码给你copy。
最后一个方法已经给出完整例子了,照着它创建一个工程来测试一下,搞清楚每一句代码的作用,很快就能明白怎么做了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式