Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.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语言中windows窗体的多任务处理#_C#_Multithreading_Winforms_Asynchronous - Fatal编程技术网

C# c语言中windows窗体的多任务处理#

C# c语言中windows窗体的多任务处理#,c#,multithreading,winforms,asynchronous,C#,Multithreading,Winforms,Asynchronous,在我的代码中 List<Task> t; private void Form1_Load(object sender, EventArgs e) { t = new List<Task>(); t.Add(Task.Factory.StartNew(() => Download())); t.Add(Task.Factory.StartNew(() => Display())); } List t; 私有void Form1\u加载

在我的代码中

List<Task> t;

private void Form1_Load(object sender, EventArgs e)
{
    t = new List<Task>();
    t.Add(Task.Factory.StartNew(() => Download()));
    t.Add(Task.Factory.StartNew(() => Display()));
}
List t;
私有void Form1\u加载(对象发送方、事件参数e)
{
t=新列表();
t、 添加(Task.Factory.StartNew(()=>Download());
t、 添加(Task.Factory.StartNew(()=>Display());
}

现在在display方法中,当我隐藏任何控件时,它会给我一个“跨线程异常”,并告诉我它被主线程使用。

很明显,
display
方法在创建它的另一个线程上运行

您只能从主线程更改WinForm控件。您需要检查该控件上的InvokeRequired是否为true,然后根据需要调用该方法

更新有关控件的任何信息

您可以这样尝试:

if (this.InvokeRequired)
{
    this.Invoke((MethodInvoker)delegate { update the ui control here});
}

您必须在主线程上调用您的操作。您需要执行以下操作:

Invoke((Action)(() => updateProgressBar()));

这将在主UI线程上运行更新。

显示方法的代码?关于“跨线程异常”已经有数百个问题了。在页面右上角的搜索框中键入或使用google。