2009-08-29 1 views
0

C#アプリケーションの読み込み率をどのように計算するのですか?私は、ロードされたアプリケーションの割合を示すプログレスバーを持つスプラッシュ画面を表示したい。C#Winformアプリケーションプリローダスプラッシュ画面

標準的な方法のライブラリがありますか、フォームロードコードの異なるポイントでプログレスバー値を更新するだけです。

またはいずれかのgimmeのは、あなたの個々のステップを取るどのくらいでかなり正確な推測を必要とするどのような場合でも、アプリケーション、プリローダのチュートリアル

答えて

2

おそらく最も簡単な方法は、スタートアップフォームのLoadイベントの開始時にスプラッシュフォームのインスタンスを作成することです。スプラッシュフォームでProgressBarを公開プロパティとして公開します。スプラッシュフォームを作成した後、そのProgressBarのMaximumプロパティをLoadイベントコードで識別できる個別のステップ数に設定し、.Show()メソッド(もちろん.ShowDialog()ではなく)を呼び出して表示します。

Loadイベントの各ステップが完了すると、パブリックProgressBarのValueプロパティが増分されます。すべてのステップが完了したら、スプラッシュフォームを閉じて処分します。

スタートアップフォームに多数のコントロールが含まれている場合、実際にフォームのコンストラクターに使用された負荷の合計時間のうち、Loadイベントの前に呼び出されるものが多いため。すべての初期化コードをコンストラクタに移動し、そこからスプラッシュスクリーンを作成して表示することが最善の方法です。

2

まあ、することができます。それでは、実際に意味のあるプログレスバーを与えることができます。読み込みプロセスを時間的にほぼ等しいと思われるいくつかのステップに分けて、それらのステップを完了すると進捗状況を計算することで近似できます。

代わりに、プログレスバーを表示するのではなく、テキストまたはグラフィックで表される一連の読み込み手順を表示することもできます。私はKDEが起動時にこれを行うと思います。そうすることで進捗状況を表示しますが、進捗バーに向かってのユーザーの期待を避けることができます(進捗バーが直線的に進行しているか加速している場合に最も効果的ですが、頻繁に停止してジャンプすると非常に遅いプロセスが発生します)。

もう1つの選択肢は、プログラムの起動を高速化し、実行時に必要なものを読み込もうとして、スプラッシュ画面を完全に削除することです。これは、あなたやあなたのプログラムのオプションかもしれないし、そうでないかもしれませんが、起動時間とプログラムスピードの全体的な印象にかなり大きな改善が見られるかもしれません。

+1

ので、私はこれらのaanswersを得ることができるすべては、プログレスバーがメモリにロードされるようになっていたコードはXパーセントをロードされているようではない、実際に私たち自身の論理的な計算であるということです。 – Moon

1

最初に、スプラッシュ画面は、ユーザーにプログラムが開始されたとの錯覚を与えるために表示され、いつでも制御が処理されます。

第2に、進行状況バーを表示する場合は、実行するタスクの数を正確に計算する必要があります。その後、ラベルloading xxxxxx.......を表示し、すべての項目の完了後に進捗バーを増分します。

起動時間の最適化の問題は、主にアプリケーションの機能に依存します。

アプリがPIMの場合、今日のイベントやタスクを読み込んですぐにユーザーに表示し、他のデータの読み込みを開始することができます。

私は以前、ツリービューを使ってオブジェクト階層を表示しなければならなかったアプリケーションを持っていましたが、各ノードは無制限の項目を持つことができました。私はトップレベルのオブジェクトを読み込んでツリービューに表示し、マーカーを置いた(実際には、ノードのタグに*を入れました.netブックや記事は私がずっと前に読んでいたものですが、覚えていました)ノード直下の子供をロードしました。

3

ユーザーが初めてアプリケーションを起動したときに、10秒かかると想定し、10秒間カウントダウンするプログレスバーを表示します。アプリケーションがロードされたら、アプリケーションのロードに実際にかかる時間をユーザーのコンピュータのどこかに保存します。次回ユーザーがアプリケーションを読み込んだとき、元の10秒ではなく保存時間を使用します。

これは簡単で分かりやすい概念です。ユーザーはアプリケーションのどの部分が読み込まれているか気にしません。彼はどれくらいの時間がかかり、カウントダウンを見たいと思っています。

+1

+1は私が今まで聞いたことがない最悪の考えではない。 :) – MusiGenesis

+1

とあなたは競合するupvoting答えのためのバッジのいくつかの種類に値する:) –