Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.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#_Winforms_Multithreading_Forms_Backgroundworker - Fatal编程技术网

C# 同时在后台显示表单和获取数据

C# 同时在后台显示表单和获取数据,c#,winforms,multithreading,forms,backgroundworker,C#,Winforms,Multithreading,Forms,Backgroundworker,我正在开发一个经常使用数据库的winforms应用程序,我90%的表单需要从Form\u load上的数据库加载一些初始数据 我被告知使用线程来显示表单,然后去获取数据并用数据填充表单,否则,直到邮递员去db并返回数据,客户才能看到表单:) 我以前用线程做过一些简单的任务,但是这个例子让我有点困惑。我有一个主窗体,它是MDIProent,其他窗体是MdiChild,如下所示: ChildForm child = new ChildForm { MdiParent = Program.mainFo

我正在开发一个经常使用数据库的
winforms
应用程序,我90%的表单需要从
Form\u load
上的数据库加载一些初始数据

我被告知使用线程来显示表单,然后去获取数据并用数据填充表单,否则,直到邮递员去db并返回数据,客户才能看到表单:)

我以前用线程做过一些简单的任务,但是这个例子让我有点困惑。我有一个主窗体,它是
MDIProent
,其他窗体是
MdiChild
,如下所示:

ChildForm child = new ChildForm { MdiParent = Program.mainForm };
和我的主窗体(在
Program.cs
中,
mdipent
是静态的)

我不知道是否应该使用
线程
<代码>后台工作人员?其他解决方案


如果你善意的回复能够帮助我度过这个案子,并赋予我不完整的知识,我将非常高兴。谢谢。

使用BackgroundWorker是最简单的方法。它处理线程问题,捕获异常,并在UI线程上运行工作完成回调


如果您使用的是C#4.5,那么wait/asych也是一种很好的方法

所以我应该在每个表单的加载事件中使用BackgroundWorker,给它一个方法(包含db works)并运行它,对吗?