一尘不染

C#中的多线程启动画面?

c#

我希望在加载应用程序时显示启动屏幕。我有一个与系统托盘控件绑定在一起的表单。我希望在加载此表单时显示启动屏幕,这需要一些时间,因为它正在访问Web服务API来填充一些下拉菜单。我还想在加载之前对依赖项进行一些基本测试(即,Web服务可用,配置文件可读)。随着启动过程的各个阶段的进行,我想用进度更新初始屏幕。

我已经阅读了很多有关线程的文章,但是我对应该从哪里控制(main()方法?)感到迷茫。我也缺少Application.Run()工作原理,这是应该从中创建线程的地方吗?现在,如果带有系统任务栏控件的表单是“活动”表单,那么飞溅应该从那里来吗?反正要等到表格完成才加载吗?

我不是在寻找代码讲义,更多是算法/方法,所以我可以一劳永逸地解决这个问题:)


阅读 315

收藏
2020-05-19

共1个答案

一尘不染

好吧,对于我过去部署的ClickOnce应用程序,我们使用Microsoft.VisualBasic名称空间来处理启动屏幕线程。您可以Microsoft.VisualBasic在.NET
2.0中引用和使用C#中的程序集,它提供了许多不错的服务。

  1. 具有主要形式继承自 Microsoft.VisualBasic.WindowsFormsApplicationBase
  2. 覆盖“ OnCreateSplashScreen”方法,如下所示:
    protected override void OnCreateSplashScreen()
    

    {
    this.SplashScreen = new SplashForm();
    this.SplashScreen.TopMost = true;
    }

非常简单,它会在加载过程中显示您的SplashForm(您需要创建),然后在主窗体完成加载后自动将其关闭。

这确实使事情变得简单,并且VisualBasic.WindowsFormsApplicationBase经过Microsoft的严格测试,并且具有许多功能,即使在100%C#的应用程序中,也可以使您在Winforms中的工作变得更加轻松。

归根结底,都是IL bytecode,所以为什么不使用它呢?

2020-05-19