2012-05-03 7 views
0

私はcomboBox1.SelectedItemを取得する必要があるバックグラウンドワーカーを持っていますが、それは別のスレッド上にあるため、GUIに到達できません(GUIはメインスレッド上にあります)。BackgroundworkerからGUIデータを取得

どうすればよいですか?

私はデリゲートを使ってみましたが、これはうまくいかないようです。

private delegate string ReadComboDelegate(ComboBox c); 

private string ReadComboBox(ComboBox c) 
{ 
    if(c.InvokeRequired) 
    { 
     ReadComboDelegate del = new ReadComboDelegate(this.ReadComboBox); 
     return (string) c.Invoke(del,c); 
    } 
    else 
    { 
     return c.Text; 
    } 
} 

答えて

0

理想的には、SelectedItem(および必要なその他のデータ)をバックグラウンドワーカーを表すメソッドに渡す必要があります。

これができない場合は、comboBox1.Invokeメソッドを使用してUIスレッドと通信できます。

+0

はい、私は現在 'e.Argument'を使用していますが、私は複数のメソッドからbackgroundworkerを呼び出しています。それらのそれぞれをchaningすることは、私が想定する本当のすっきりした解決策ではありません。 – Devator

0

ReportProgress呼び出し中にコンボボックスを読み取ることができます。

関連する問題