在后台异步创建表单

问题描述 投票:0回答:1

我有3种形式:

MainForm:应用程序的主窗体。启动程序后,需要 15 秒的时间进行初始化并使 UI 变得有响应。 SimpleForm:带有一些按钮的简单表单。单击 Mainform 上的按钮时打开。

ComplexForm:布局复杂的复杂表单。单击 SimpleForm 上的按钮时打开。初始化需要 5 秒。

我的问题:ComplexForm 的初始化时间太长,破坏了用户体验。

我的目标是在 MainForm 初始化时在后台创建复杂的表单。这样,当我单击 SimpleForm 上的按钮时,我只需使表单可见(显然不需要时间)。异步发生这一点很重要(可能不是在 UI 线程上?),因此 Mainform 的 15 秒初始化时间不应该更多!

实现此功能的最佳实践是什么?

c# .net winforms asynchronous
1个回答
0
投票

在Windows Forms中,Form就是Control,Control不能在UI线程以外的任何线程中创建。也不在常规线程中,也不在异步中。

但是,您可以在程序开始时实例化三个表单,并将它们存储在静态字段中。这样,窗体打开时间将大大减少,但程序启动时间将增加。另外,我建议您尝试优化表单,因为它们的初始化时间太大了。

© www.soinside.com 2019 - 2024. All rights reserved.