我有一个需要抓取comboBox1.SelectedItem
的后台工作者,但是它位于不同的线程上,因此我无法“到达”GUI(因为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 :(得分:0)
理想情况下,您应该将SelectedItem(以及您可能需要的任何其他数据)传递给代表后台工作程序的方法。
如果那不可能,那么您可以使用 comboBox1.Invoke 方法与UI线程进行通信。
答案 1 :(得分:0)
您可以在ReportProgress调用期间阅读组合框。