如何调用在线程中使用的代码

时间:2012-04-17 16:44:20

标签: c# multithreading combobox invoke

您好,我想在下面使用我的代码获取一个帖子。我有一些示例代码用于调用但我不知道如何做到这一点,当我的组合框选择项目转到字符串。

这就是我所拥有的:

//My code
string cb1 = comboBox1.Items[comboBox1.SelectedIndex].ToString();

//Example 1
textBox2.Invoke((Action)(() => textBox2.Text = ""));

//Example 2
textbox2.Invoke((MethodInvoker)(delegate()
{
    //do something
}));

2 个答案:

答案 0 :(得分:5)

如果您想使用Example 1(使用Func<string>代表而不是Action代表),请尝试使用此代码:

string cb1 = comboBox1.Invoke((Func<string>) (() => comboBox1.Items[comboBox1.SelectedIndex].ToString())) as string;

答案 1 :(得分:2)

string newValue = "hi there";

if (textBox.InvokeRequired)
    textBox.Invoke((MethodInvoker)delegate { textBox.Text = newValue; });
else
    textBox.Text = newValue;

对于有问题的特定代码,我们可以像

那样做
MethodInvoker mi = delegate
{
     string cb1 = comboBox1.Items[comboBox1.SelectedIndex].ToString();
};
if (InvokeRequired)
   this.BeginInvoke(mi);
else
   mi.Invoke();