0

我试图从 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())
4

1 回答 1

3

控件的某些属性被缓存并且不需要调用 winapi 来检索它们的值。特别是 Text 属性存储在内部字符串中。因此,在线程中读取 Text 属性不会引发异常,因为它只会返回字符串值。然而,写作确实需要更新该字符串进行 winapi 调用以更新本机窗口。

触发异常的是winapi调用。特别是访问 Handle 属性。

于 2012-07-20T10:41:14.393 回答