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?望解答!
展开
3个回答
展开全部
把那个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进行赋值
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询