我有一个表格(复杂形式在代码中)具有多个控件,需要一些时间来加载。因此,我决定放入一个单独的线程中,以减少初始加载时间。除了等待表单上的标签控件(Form1在代码中)最初不显示;就在 Form1 响起之前的一瞬间。所以我的问题是,为什么标签控件不显示?
[STAThread]
static void Main()
{
Thread thread = new Thread(delegate()
{
var wait = new Form1(); //simple form with a label control with text "please wait"
wait.Show();
var complexUI = new complexForm();// this takes long time to load
wait.Dispose();// it will go off even without this method
// MessageBox.Show("loaded");
});
thread.SetApartmentState(ApartmentState.STA);
thread.Priority = ThreadPriority.Highest;
thread.IsBackground = true;
thread.Start();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new main());
}
不要这样做。会以泪水结束。仅从 UI 线程创建 UI 控件 - 这是拥有消息泵的线程,这对于正确操作至关重要。
正确的解决方案是创建一个启动屏幕,在主窗口初始化时显示该启动屏幕。
Stack Overflow 上有很多关于如何创建启动屏幕的线程。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)