.net 使用Winforms应用程序响应启动
我有一个视觉复杂的应用程序,有很多用户界面组件和第三方控件。在启动时,它会进入一个暂时的连接状态,因为所有东西都会调整大小,并且以表单加载(但主要是由于调整大小) 因此,我认为解决方案可能是在form_Load事件的开头隐藏表单,然后在结尾显示它。但是,当代码进入form_Load事件时,表单已经可见.net 使用Winforms应用程序响应启动,.net,winforms,performance,.net-4.0,startup,.net,Winforms,Performance,.net 4.0,Startup,我有一个视觉复杂的应用程序,有很多用户界面组件和第三方控件。在启动时,它会进入一个暂时的连接状态,因为所有东西都会调整大小,并且以表单加载(但主要是由于调整大小) 因此,我认为解决方案可能是在form_Load事件的开头隐藏表单,然后在结尾显示它。但是,当代码进入form_Load事件时,表单已经可见 如何确保表单在准备就绪并调整大小时显示。在UI线程上执行Load事件。千万不要将逻辑处理放在UI线程中,因为阻塞它会使UI无响应 您应该分叉一个新线程(参见类)并在那里执行启动逻辑。如果加载屏幕花
如何确保表单在准备就绪并调整大小时显示。在UI线程上执行
Load
事件。千万不要将逻辑处理放在UI线程中,因为阻塞它会使UI无响应
您应该分叉一个新线程(参见类)并在那里执行启动逻辑。如果加载屏幕花费的时间超过3秒,则可能正常。您需要使用Form.Invoke()
和委托来执行与UI线程交互的任何逻辑(例如更改文本框的文本)
您认为在显示表单时会发生
Load
事件的假设也是错误的。Load
事件发生在组件初始化之后和表单显示之前,然后在表单显示时发生show
事件。在UI线程上执行Load
事件。千万不要将逻辑处理放在UI线程中,因为阻塞它会使UI无响应
您应该分叉一个新线程(参见类)并在那里执行启动逻辑。如果加载屏幕花费的时间超过3秒,则可能正常。您需要使用Form.Invoke()
和委托来执行与UI线程交互的任何逻辑(例如更改文本框的文本)
您认为在显示表单时会发生
Load
事件的假设也是错误的。加载
事件发生在组件初始化之后和表单显示之前,然后在表单显示时发生显示
事件。这与此类似,因此具有可接受答案的问题:
此MSDN链接与提高windows窗体性能相关,也可能对您有很大帮助:
这与这个问题类似,因此有一个公认的答案: 此MSDN链接与提高windows窗体性能相关,也可能对您有很大帮助:
您的假设并不完全正确:表单加载(或者准确地说:加载事件处理程序)在第一次显示表单时执行。确实,此时表单已经可见,但不可用,因为线程被FormLoad函数阻塞 您有两种选择:
您的假设并不完全正确:表单加载(或者准确地说:加载事件处理程序)在第一次显示表单时执行。确实,此时表单已经可见,但不可用,因为线程被FormLoad函数阻塞 您有两种选择: