Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.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# 使用Invoke从另一个线程获取tabControl SelectedTab_C#_Multithreading_Winforms_Invoke - Fatal编程技术网

C# 使用Invoke从另一个线程获取tabControl SelectedTab

C# 使用Invoke从另一个线程获取tabControl SelectedTab,c#,multithreading,winforms,invoke,C#,Multithreading,Winforms,Invoke,我尝试了几种不同的方法来实现这一点,但没有一种有效。我需要获取选项卡控件1.SelectedTab.Name的值。如果我尝试以下代码: string name = tabControl1.SelectedTab.Name; 我得到一个错误,我无法从另一个线程访问对象。所以现在我尝试使用Invoke来检索值。我在网上找到并尝试过的方法之一是: string name = tabControl1.Invoke((MethodInvoker)delegate { Text = tabControl1

我尝试了几种不同的方法来实现这一点,但没有一种有效。我需要获取选项卡控件1.SelectedTab.Name的值。如果我尝试以下代码:

string name = tabControl1.SelectedTab.Name;
我得到一个错误,我无法从另一个线程访问对象。所以现在我尝试使用Invoke来检索值。我在网上找到并尝试过的方法之一是:

string name = tabControl1.Invoke((MethodInvoker)delegate { Text = tabControl1.SelectedTab.Name; })).ToString();
这将导致错误,对象引用未设置为对象的实例。我尝试了一些其他方法,但这些方法导致了空结果


我试着在SO中寻找答案,但找不到任何有效的答案。如果有人能为我指明正确的方向,我将不胜感激。谢谢

我认为您正在尝试执行以下操作:

string tab = (string)this.Invoke(new Func<string>(() => controlTab1.SelectedTab.Name));
stringtab=(string)this.Invoke(newfunc(()=>controlTab1.SelectedTab.Name));

这将从UI线程返回所选选项卡的名称。注意。

您需要直接在UI线程上创建和操作几何体对象。您执行的任何线程处理都不能直接访问几何体对象,它们必须调度到创建它们的线程—UI线程。