我希望在加载应用程序时显示启动屏幕。我有一个与系统托盘控件绑定在一起的表单。我希望在加载此表单时显示启动屏幕,这需要一些时间,因为它正在访问Web服务API来填充一些下拉菜单。我还想在加载之前对依赖项进行一些基本测试(即,Web服务可用,配置文件可读)。随着启动过程的各个阶段的进行,我想用进度更新初始屏幕。
我已经阅读了很多有关线程的文章,但是我对应该从哪里控制(main()方法?)感到迷茫。我也缺少Application.Run()工作原理,这是应该从中创建线程的地方吗?现在,如果带有系统任务栏控件的表单是“活动”表单,那么飞溅应该从那里来吗?反正要等到表格完成才加载吗?
main()
Application.Run()
我不是在寻找代码讲义,更多是算法/方法,所以我可以一劳永逸地解决这个问题:)
好吧,对于我过去部署的ClickOnce应用程序,我们使用Microsoft.VisualBasic名称空间来处理启动屏幕线程。您可以Microsoft.VisualBasic在.NET 2.0中引用和使用C#中的程序集,它提供了许多不错的服务。
Microsoft.VisualBasic
Microsoft.VisualBasic.WindowsFormsApplicationBase
protected override void OnCreateSplashScreen()
{ this.SplashScreen = new SplashForm(); this.SplashScreen.TopMost = true; }
非常简单,它会在加载过程中显示您的SplashForm(您需要创建),然后在主窗体完成加载后自动将其关闭。
这确实使事情变得简单,并且VisualBasic.WindowsFormsApplicationBase经过Microsoft的严格测试,并且具有许多功能,即使在100%C#的应用程序中,也可以使您在Winforms中的工作变得更加轻松。
VisualBasic.WindowsFormsApplicationBase
归根结底,都是IL bytecode,所以为什么不使用它呢?
bytecode