【发布时间】:2015-05-04 19:00:23
【问题描述】:
我有一个名为SpalshScreen.cs 的WinForm 带有一个简单标签,其中Text 属性设置为“数据加载...”。标签在表单中居中。我还定义了一个名为DoClose() 的公共方法。
我的MainForm.Form_Load 方法包含:
Hide();
SplashScreen form = new SplashScreen();
form.Show();
// Simulate Doing Database Table Load(s)
Thread.Sleep(5000);
form.DoClose();
Show();
但是,当我运行时,我的 Splash 确实出现了,但是,假设标签文本是它只显示一个浅色框。
如果我将form.Show(); 更改为form.ShowDialog();,文本会正确显示,但主循环会暂停,直到我关闭启动窗口。
【问题讨论】:
-
在非 UI 线程中加载数据库,而不是在 UI 线程中。
-
不,它们都加载到 UI 线程中。
-
这不是一个问题,而是一个建议。
-
@Randy 是的。这就是您的代码不起作用的原因。不要那样做。
-
好的。警告这对我来说将是一个愚蠢的问题,你的意思是做一个 context.Table.LoadAsync(); ?
标签: c# winforms splash-screen