C#判断到了if条件为真,但是却并不执行if里的语句。
我现在有这么一部分代码:while(IsOpen){try{if(text.Contains("IROSloaderstart")){MessageBox.Show("有...
我现在有这么一部分代码:
while (IsOpen)
{
try
{
if (text.Contains("IROS loader start"))
{
MessageBox.Show("有");
WriteMacLabel.Text = "";
OtherTestLabel.Text = "";
}
}
catch { }
}
已经弹出了Box,显示的有,但是我的WriteMacLabel和OtherTestLabel并没有被清空,我试了各种方法,都是这样的。请问是什么原因。我用的是多线程编程,新建线程判断是否存在IROS loader start,若存在就执行两个Label清空,MessageBox是为了方便观察调试时临时加上去的。很是郁闷,为什么判断到存在了,但是Label却没有清空。 展开
while (IsOpen)
{
try
{
if (text.Contains("IROS loader start"))
{
MessageBox.Show("有");
WriteMacLabel.Text = "";
OtherTestLabel.Text = "";
}
}
catch { }
}
已经弹出了Box,显示的有,但是我的WriteMacLabel和OtherTestLabel并没有被清空,我试了各种方法,都是这样的。请问是什么原因。我用的是多线程编程,新建线程判断是否存在IROS loader start,若存在就执行两个Label清空,MessageBox是为了方便观察调试时临时加上去的。很是郁闷,为什么判断到存在了,但是Label却没有清空。 展开
4个回答
展开全部
要用Invoke来滑举神信亏调用,答镇多线程
this.Invoke(new Action(() => {
WriteMacLabel.Text = "";
OtherTestLabel.Text = "";
}));
this.Invoke(new Action(() => {
WriteMacLabel.Text = "";
OtherTestLabel.Text = "";
}));
追问
厉害,大神,问题解决了,学习了。我想继续问下,为什么我那种方法检测到了,但是却并不执行if里面的语句呢。我才接触C#几天,以前用的VC++,很多地方不明白。求指点啊。
追答
你那个不是没执行,而是报错了,你在catch里面加个断点就看到了,是无法访问此对象,因为另一个线程拥有此对象,差不多的意思。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
检查下 是否在UI里给 lab默认值睁高
尝试下不要赋空 赋羡凯个其他值 在前兄早唤面加上this.WriteMacLabel.Text="";
尝试下不要赋空 赋羡凯个其他值 在前兄早唤面加上this.WriteMacLabel.Text="";
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
WriteMacLabel.Text = "誉冲";
OtherTestLabel.Text = ""; 后加
WriteMacLabel.Reflesh();
OtherTestLabel.Reflesh()亏晌;
试庆空歼试。
OtherTestLabel.Text = ""; 后加
WriteMacLabel.Reflesh();
OtherTestLabel.Reflesh()亏晌;
试庆空歼试。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是不是其他的地方又对WriteMacLabel和OtherTestLabel赋值了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询