C#应用程序线程

时间:2016-02-26 20:32:22

标签: c# winforms

所以我创建的应用程序将有一个加载资源的启动画面,完成后将加载应用程序的主窗体。在过去的时间里,我只是让启动画面拥有该主题并保持隐藏状态,但是我想要实际让我的主表单成为主持人,但我在表单之间转换时遇到了麻烦。我目前的做法是

void main(String[] args)
{
   ApplicationContext appContext = new ApplicationContext(new SplashScreen());
   appContext.ThreadExit += appContext_ThreadExit;
   Application.Run(appContext);
}
place
private void appContext_ThreadExit(object sender, EventArgs e)
{
   Application.Run(new MainForm());
}

这给我一个错误,你不能在线程上启动一个新的消息循环。那么我该如何正确执行这种转变呢?或者我已经使用SplashScreen拥有该线程的最佳方法了吗?

1 个答案:

答案 0 :(得分:0)

以下是我提出的建议,但如果有人有更优雅或正确的方式,请随时告诉我。

bool isLoading = true;

MainForm.OnLoad()
   -> creates and runs SplashScreen

MainForm.OnShow()
   -> if isLoading is true, re-hide

SplashScreen.LoadingComplete
   -> event to signal completion of loading events

MainForm.SplashScreenLoadingComplete
   -> handler sets isLoading to false
   -> calls Show() this time form will show

我使用后台工作程序处理SplashScreen中的加载