C# 应用程序线程

本文关键字:线程 应用程序 | 更新日期: 2023-09-27 18:36:22

所以我正在创建一个应用程序,该应用程序将具有加载资源的初始屏幕,完成后将加载应用程序的 Main 窗体。在过去,我只是让初始屏幕拥有线程并保持隐藏状态,但我正在考虑实际上让我的主窗体成为线程所有者的想法,但我在窗体之间转换时遇到了麻烦。我目前的做法是

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());
}

这给了我一个错误,即您无法在线程上启动新的消息循环。那么,如何正确执行此转换呢?还是我已经通过允许初始屏幕拥有线程来使用最佳方法?

C# 应用程序线程

这是我想出的,但如果有人有更优雅或更合适的方法,请随时告诉我。

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

我使用后台工作者处理启动屏幕中的加载