C#thread(Read())在尝试根据收到的内容更新winform时会导致System.NotSupportedException。 完整的错误消息是
Read()System.NotSupportedException: 无法显示错误消息 因为可选的资源程序集 包含它无法找到 Microsoft.AGL.Common.MISC.HandelAr() 在 System.Windows.Forms.ProgressBar._SetInfo() 在 System.Windows.Forms.ProgressBar.set_Value() at ... ProcessStatus()at ... Read()
构建/目标环境是:Microsoft.NET\SDK\CompactFramework\v2.0\WindowsCE
。问题是从Thread写入ProgressBar吗?
如果是这样,从Thread更新ProgressBar的正确C#/ winforms方法是什么?在这个应用程序中,Read()线程是连续的:它在应用程序启动时启动并永远运行。
void ProcessStatus(byte[] status)
{
Status.Speed = status[5];
var Speed = Status.Speed/GEAR_RATIO;
Status.Speed = (int) Speed;
progressBarSpeed.Value = Status.Speed;
...
答案 0 :(得分:4)
您需要使用Invoke
更改在Gui线程中创建的控件。
为了让生活更轻松,请查看一些extension methods provided here
答案 1 :(得分:2)
您应该致电Control.BeginInvoke