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 に答える