我试图从GUI中读取值,并使用Task
传递了如下所示的数据。我不明白是因为只有组合框字段(即tab3_ddl_Range.SelectedText
)才会出错,如果我将其删除,则错误就会消失。它不应该仍然给出错误吗?当我从非GUI线程访问GUI时?
factoryA.StartNew(() => ReadInstrument_3(
Globls.numReadings, tab3_txt_Address.Text.TrimEnd(), tab3_rb_DCI.Checked,
tab2_rb_DCV.Checked, tab3_ddl_Range.SelectedText.TrimEnd(),
tab3_rb_FixedZ_10G.Checked, tab3_rb_FixedZ_10M.Checked,
tab3_rb_Azero_Off.Checked, tab3_rb_Azero_On.Checked,
tab3_rb_Azero_Once.Checked, tab3_txt_Aper.Text.TrimEnd(),
tab3_txt_Device_Timeout.Text.TrimEnd(), tab3_txt_SICL.Text.TrimEnd())
答案 0 :(得分:3)
控件的某些属性已缓存,并且不需要使用winapi调用来检索其值。特别是Text属性存储在内部字符串中。因此,读取线程中的Text属性不会引发异常,因为它只返回字符串值。但是要编写,这需要更新字符串和进行winapi调用以更新本机窗口。
触发异常的是winapi调用。特别是,访问Handle属性。