我有一个网格,当双击一行时会加载一个表单。然而需要加载大量数据,因此我希望显示一个简单的表单,上面写着“正在加载,请稍候...”。当所有加载完成后,表单必须消失。
这是我现在拥有的,但它不起作用:
调用具有大量数据的表单的代码:
FormWithLotData form = new FormWithLotData();
form.ShowDialog(this);
FormWithLotData的构造函数:
// Show load form
FormIsLoading frm = new FormIsLoading();
_CloseLoadForm closeForm = new _CloseLoadForm(frm.Close);
System.Threading.Thread thread = new System.Threading.Thread(frm.Show);
thread.Start();
InitializeComponent();
this.Visible = false;
LoadAllData();
this.Visible = true;
// Close load form
Invoke(closeForm);
希望你能帮我解决问题。
编辑: 我想在加载表单上显示一个动画gif。
解决方案: 我创建了一个后台工作者。DoWork事件处理所有的加载,并使用invoke()方法将节点添加到树视图中。现在,GUI不会挂起,用户也不会觉得应用程序挂起。
Thread
(即不使用ThreadPool),并将其公寓状态设置为STA。然后在工作线程中构造它,在完成时将其传回。然后,您需要将此预构建树添加到UI中,希望它不会因线程亲和性问题而爆炸。这似乎比您在应用程序中所需的要复杂得多。 - user1228