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());
}
这给了我一个错误,即您无法在线程上启动新的消息循环。那么,如何正确执行此转换呢?还是我已经通过允许初始屏幕拥有线程来使用最佳方法?
这是我想出的,但如果有人有更优雅或更合适的方法,请随时告诉我。
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
我使用后台工作者处理启动屏幕中的加载