C#多线程访问控件无效

本人写了一个winform应用,在Form中有一Button和一个label,点击后,增加一条线程thread,thread将调其它几个cs里的几个方法,进行一番运算,最... 本人写了一个winform应用,在Form中有一Button和一个label,点击后,增加一条线程thread,thread将调其它几个cs里的几个方法,进行一番运算,最后将运算结果通过委托Invoke更新到label上。代码运行通过了,经过跟踪,label.text = result;这行代码也运行了,可是Form上的lable却无变化,也没报任何错误。请各位大虾,这是哪里出错了,是不是我哪属性没设置好,还是代码上有什么不妥的地方,亦或是thread没有真正得到lable的控制权,还是说thread这边更新的label并不是Form上的这个lable?望解答! 展开
 我来答
空雪梦见
2013-12-05 · TA获得超过5597个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1193万
展开全部
你怎么invoke的?
只有在创建Label的那个线程才能更改label上的内容
创建Label和创建Form是同一个线程
Form的Invoke方法可以将一个委托放在创建Form的线程上运行
更多追问追答
追问
我是在线程thread里Invoke的,就是thread任务完成到一半的时候Invoke的,问题出在这了?
追答
调用哪个对象的Invoke方法?代码能不能稍微贴一点(至少重要的几个部分
gzxpg
2013-12-05 · TA获得超过232个赞
知道小有建树答主
回答量:838
采纳率:76%
帮助的人:232万
展开全部
把那个invoke换成换成begininvoke试下
追问
试过了,还是一样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-12-05
展开全部
在当前页面的构造函数中加入 Label.CheckForIllegalCrossThreadCalls = false;
追问
加入后,报了这个错误:
无法使用实例引用来访问成员“System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls.get”;请改用类型名来限定它
追答
Thread thread = new Thread(GetResult);
            thread.IsBackground = true;
            thread.Start();
            
//通过线程调用的方法
 public void GetResult()
        { 
            //运算部分的代码结果 此处用 "1000"
            label1.Text= "1000";//对label进行赋值
        }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式