質問

C# アプリケーションの読み込みパーセンテージを計算するにはどうすればよいですか。ロードされたアプリケーションの割合を示す進行状況バーを含むスプラッシュ画面を表示したいと考えています。

そのための標準メソッド/ライブラリはありますか、それともフォーム読み込みコードのさまざまなポイントでプログレスバーの値を更新するだけです。

または、アプリケーションのプリローダーに関するチュートリアルを教えてください。

役に立ちましたか?

解決

おそらくこれを行う最も簡単な方法は、あなたのスタートアップフォームのLoadイベントの開始時に、あなたのスプラッシュフォームのインスタンスを作成することです。スプラッシュフォームでは、公共の財産としてのプログレスバーを公開。スプラッシュフォームを作成した後、あなたは(もちろん、ない.ShowDialog())その.SHOW()メソッドを呼び出すことで、その後、Loadイベントコードで識別し、それを表示することができ、離散ステップ数にそのプログレスバーの最大値プロパティを設定します。

Loadイベントの各ステップが完了すると、

、あなただけの公共のProgressBarのValueプロパティをインクリメント。すべてのステップが完了したら、スプラッシュフォームを閉じて、それを処分します。

この月またはスタートアップフォームがコントロールが多数含まれている場合、その後、総loadup時間の良い割合は、実際にLoadイベントの前に呼び出されます、フォームのコンストラクタ、に費やされるため、正常に動作しない場合があります。これは、コンストラクタに初期化コードのすべてを移動するために最善のこと、そしてそこからスプラッシュ画面を作成して表示される場合があります。

他のヒント

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

これは単純かつ明白な概念です。ユーザーはアプリケーションのどの部分が読み込まれているかは気にせず、どれくらい時間がかかるかを気にしており、カウントダウンを見たいと考えています。

さて、どのような場合には、あなたの個々のステップを取るどのくらいでかなり正確な推測を必要とします。そうしてあなたは、実際に意味のあるプログレスバーを与えることができます。あなたは時間にほぼ等しくなると、あなたはそれらのステップを完了して進捗状況を計算することを前提といくつかのステップにあなたのロード処理を分割することによって、それを近似することができます。

の代替がプログレスバーではなく、負荷の一連のステップを示すことではないだろう、テキストまたはグラフィックのいずれかの表現。私はKDEが起動時にこれを行いだと思います。あなたは進行状況を示すが、(それが頻繁に停止し、それだけで非常にゆっくりとしたプロセスの印象を作成しますジャンプした場合。プログレスバーが直線的に進行したり加速しているいずれかの場合には最も適しています)プログレスバーに対するユーザーの期待を避けるためそのように。

別のオプションは、プログラムの起動が高速に作成しようと、実行時に必要なものをロードすることで、完全にスプラッシュ画面を排除することです。これは、またはあなたやあなたのプログラムのためのオプションであってもなくてもよいが、それは起動時間とプログラム速度の全体的な印象ではかなり大幅な改善を示すことができます。

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

あなたはプログレスバーを表示したい場合は、

は、第二に、あなたは正確にあなたが実行するタスクの数を計算する必要があります。そして、ラベルloading xxxxxx.......を示し、すべての項目が完了した後に、プログレスバーをインクリメントします。

それは主に、アプリケーションの機能に依存した時間を起動最適化の問題については。

あなたのアプリは、あなたが今日のイベントやタスクをロードして、すぐにそれをユーザーに表示し、他のデータのロードを開始PIMであると仮定します。

私はかつて、私はアイテムの数に制限を持つことができますツリービューに、各ノードを使用してオブジェクト階層を表示していたアプリケーションを持っていました。使用はをクリックしたとき、私は(実際に私は私がずっと前に読んで思い出していたいくつかの.NET帳や記事から学んだノードのタグに*入れ)トップレベルのオブジェクトをロードし、ツリービューで、次に表示され、マーカーを置きますノードは、私が直接の子をロードしました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top