Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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# - Fatal编程技术网

为什么线程在c#中不能正确执行?

为什么线程在c#中不能正确执行?,c#,C#,嗨,我有一个如下的方法: void Foo { MethodInvoker method=delegate{ frm2 frm=new frm2(); frm.show(); } 我在这个表单中有一个datagridview控件,它从DB中执行大量加载,并在frm2中加载datagridview中的数据 问题是,当数据附加到frm2中的datagridview时,主线程(form1线程)被冻结。为什么会发生这种情况 我创建了两个不同的项目,并在这两个项目中分别创建了frm2和form1,结果正

嗨,我有一个如下的方法:

void Foo
{
MethodInvoker method=delegate{
frm2 frm=new frm2();
frm.show();
}
我在这个表单中有一个datagridview控件,它从DB中执行大量加载,并在frm2中加载datagridview中的数据

问题是,当数据附加到frm2中的datagridview时,主线程(form1线程)被冻结。为什么会发生这种情况


我创建了两个不同的项目,并在这两个项目中分别创建了frm2和form1,结果正常,没有冻结任何一个项目。

好吧,我认为WinForms中的任何UI操作都只有一个线程。 如果您在表单构造函数中执行DB检索,那么这将在UI线程中执行,并且所有表单都将冻结


您应该创建一个新线程来从DB获取数据,然后在UI线程的UI中设置它。

我认为WinForms中的任何UI操作都只有一个线程。 如果您在表单构造函数中执行DB检索,那么这将在UI线程中执行,并且所有表单都将冻结

您应该创建一个新线程来从DB获取数据,然后在UI线程的UI中设置它