c#通过委托更新UI界面

privatevoidbtnSendFile_Click(objectsender,EventArgse){ThreadfileSendHandler=newThread... private void btnSendFile_Click(object sender, EventArgs e)
{
Thread fileSendHandler = new Thread(()=>
{
//其他代码

this.Invoke(new Action(() =>
{
this.lblSendProgress.Text = "正在发送:" + progressPercent + "%";
}));
});
fileSendHandler.Start();
}
在form1.cs中写了一个按钮处理方法,新开了一个线程去处理费时的工作,并想实时更新一下label,
代码是能够运行的,label也显示了正常的结果,但就是单步调试的时候,把鼠标放在this.lblSendProgress.Text上时会显示以下信息:this.lblSendProgress.Text = “this.lblSendProgress.Text”引发了“Microsoft.VisualStudio.Debugger.Runtime.CrossThreadMessagingException”类型的异常
不知道是怎么回事。有异常但程序又能正常运行。
没分了,求好心人帮帮忙
展开
 我来答
lordofbai_du
2013-12-18 · TA获得超过183个赞
知道小有建树答主
回答量:378
采纳率:100%
帮助的人:269万
展开全部
你可以理解为调试器本身是属于另外一个线程的,它取text的值给你显示就已经属于跨线程调用了,所以报了一个异常,但是这个异常是调试器操作出来的异常,你的代码并没有问题。
hongfei357
2013-12-18 · TA获得超过285个赞
知道小有建树答主
回答量:384
采纳率:100%
帮助的人:221万
展开全部
public delegate void ShowMess(string context);//刷新内容
void ThreadStart()
{
    ShowMess sm=new ShowMess(showui);
    this.invoke(sm,"刷新");
}
void showui(string context)
{
    lblSendProgress.text=context;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式