
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”类型的异常
不知道是怎么回事。有异常但程序又能正常运行。
没分了,求好心人帮帮忙 展开
{
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”类型的异常
不知道是怎么回事。有异常但程序又能正常运行。
没分了,求好心人帮帮忙 展开
2个回答
展开全部
你可以理解为调试器本身是属于另外一个线程的,它取text的值给你显示就已经属于跨线程调用了,所以报了一个异常,但是这个异常是调试器操作出来的异常,你的代码并没有问题。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |