0

我有一个需要抓取的后台工作人员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;
    }
}
4

2 回答 2

0

理想情况下,您应该将 SelectedItem(以及您可能需要的任何其他数据)传递给表示后台工作人员的方法。

如果那不可能,那么您可以使用comboBox1.Invoke方法与 UI 线程进行通信。

于 2012-05-03T10:17:31.673 回答
0

您可以在 ReportProgress 调用期间读取组合框。

于 2012-05-03T10:50:41.357 回答