Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何调用在线程中使用的代码_C#_Multithreading_Combobox_Invoke - Fatal编程技术网

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

C# 如何调用在线程中使用的代码,c#,multithreading,combobox,invoke,C#,Multithreading,Combobox,Invoke,嗨,我想用我下面的代码作为一个线程。我有一些调用的示例代码,但我不知道当组合框中的选定项变为字符串时如何执行 这就是我所拥有的: //My code string cb1 = comboBox1.Items[comboBox1.SelectedIndex].ToString(); //Example 1 textBox2.Invoke((Action)(() => textBox2.Text = "")); //Example 2 textbox2.Invoke((MethodInvo

嗨,我想用我下面的代码作为一个线程。我有一些调用的示例代码,但我不知道当组合框中的选定项变为字符串时如何执行

这就是我所拥有的:

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

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

//Example 2
textbox2.Invoke((MethodInvoker)(delegate()
{
    //do something
}));
对于有问题的特定代码,我们可以这样做

MethodInvoker mi = delegate
{
     string cb1 = comboBox1.Items[comboBox1.SelectedIndex].ToString();
};
if (InvokeRequired)
   this.BeginInvoke(mi);
else
   mi.Invoke();
对于有问题的特定代码,我们可以这样做

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

如果要使用
示例1
(使用
Func
委托而不是
操作
委托),请尝试此选项:

string cb1=comboBox1.Invoke((Func)(()=>comboBox1.Items[comboBox1.SelectedIndex].ToString())作为字符串;

如果您想使用
示例1
(使用
Func
委托而不是
操作
委托),请尝试此选项:

string cb1=comboBox1.Invoke((Func)(()=>comboBox1.Items[comboBox1.SelectedIndex].ToString())作为字符串;

No不是文本框。//我的代码是我的问题。您好,您的代码没有错误。。但我无法访问字符串cb1。我该怎么做?Thread=newthread(newthreadstart(Beta));oThread.Start();public void Beta(){//把方法调用程序的东西放在这里}我的意思是你的代码工作得很好。但我明白了。“名称cb1在当前上下文中不存在”,因为我想使用或显示它。不,不是文本框。//我的代码是我的问题。您好,您的代码没有错误。。但我无法访问字符串cb1。我该怎么做?Thread=newthread(newthreadstart(Beta));oThread.Start();public void Beta(){//把方法调用程序的东西放在这里}我的意思是你的代码工作得很好。但我明白了。“名称cb1在当前上下文中不存在”,因为我想使用或显示它。适合我!很不错的!谢谢。:)@吉塔夫:没问题。这是我通过线程与控件对话的首选方式。适合我!很不错的!谢谢。:)@吉塔夫:没问题。这是我通过线程与控件对话的首选方式。
string cb1 = comboBox1.Invoke((Func<string>) (() => comboBox1.Items[comboBox1.SelectedIndex].ToString())) as string;