2009-08-29 181 views
0

我如何计算我的C#应用​​程序的加载百分比。我想显示一个启动画面,显示一个显示应用程序加载百分比的进度条。C#Winform应用程序预加载器启动画面

是否有任何标准方法\库,或者我将不得不更新我的表单加载代码中不同点的进度栏值。

或者可以在任何给我上的应用程序预加载的教程

回答

2

可能最简单的方法是在启动窗体的Load事件开始时创建启动窗体的实例。在飞溅形式中,将其ProgressBar公开为公共属性。创建初始窗体后,将其ProgressBar的Maximum属性设置为您可以在Load事件代码中识别的离散步骤的数量,然后通过调用其.Show()方法(当然不是.ShowDialog())来显示它。

随着Load事件中的每一步完成,您只需增加公共ProgressBar的Value属性。当所有步骤完成后,关闭飞溅表单并进行处置。

这可能会也可能不会正常工作,因为如果您的启动窗体包含大量控件,则总载入时间的很大百分比实际上将花费在窗体的构造函数中,这将在Load事件之前调用。最好将所有的初始化代码移到构造函数中,并从那里创建并显示启动画面。

2

那么,在任何情况下,你需要在你的各个步骤需要多长时间一个相当准确的猜测。只有这样你才能给出一个真正有意义的进度条。您可以通过将您的加载过程分成几个步骤来近似它,假设您的时间大致相同,并在完成这些步骤时计算进度。

另一种方法是不显示进度条,而是显示一系列加载步骤,用文本或图形表示。我认为KDE在启动时会这样做。这样,你可以显示进度,但避免用户对进度条的期望(如果进度条是线性进展或加速的话,效果最好;如果频繁停止并跳转,它只会产生非常缓慢的进程的印象)。

另一种方法是通过尝试快速启动程序并在运行时加载所需内容来完全消除启动画面。这可能会也可能不是您或您的程序的选项,但它可以在启动时间和程序速度的总体印象方面显示出相当显着的改进。

+1

所以我只能用这些aanswers得到的是进度条实际上是我们自己的逻辑运算不喜欢已经被加载X%的人认为应该在内存中加载的代码。 – Moon 2009-08-29 20:41:52

1

首先,Splash屏幕显示给用户一个错觉,即程序已经启动,并且随时都会处理控件。

其次,如果你想显示进度条,那么你需要准确计算你执行的任务的数量。然后显示标签loading xxxxxx.......并在完成每个项目后递增进度条。

至于优化启动时间的问题,它主要取决于您的应用程序的功能。

假设你的应用程序是一个PIM,那么你可以加载今天的事件和任务,并快速显示给用户,然后开始加载其他数据。

我曾经有一个应用程序,我必须使用Treeview显示对象层次结构,每个节点可以有无限数量的项目。我加载了顶层对象,然后在树形视图中显示并放置标记(实际上我把*放在节点的标记中,这是我从一些.net书或文章中学到的,很久以前我曾经读过但记得),当点击我加载了直接的子节点。

3

用户首次启动应用程序时,假定需要10秒钟,并显示进度条倒计时10秒。加载应用程序后,在用户计算机的某个位置保存加载应用程序所用的实际时间。下次用户加载您的应用程序时,使用保存的时间而不是原来的10秒。

这是一个简单明显的概念。用户不关心应用程序的哪些部分正在加载,他关心需要多长时间,他希望看到倒计时。

+1

+1不是我听过的最糟糕的主意。 :) – MusiGenesis 2009-08-29 20:50:30

+1

和你值得upvoting竞争回答:)的徽章 – 2009-08-30 05:25:18

相关问题