web-dev-qa-db-ja.com

マルチスレッド操作の進行状況インジケーターの提案?

アプリケーションの古いバージョンでは、ロード中に実行された操作はシーケンシャルでした。ロードされているコンポーネントで単一行のテキスト文字列を更新することにより、進行状況を示しました。例えば:

Loading <Module 1> ...
Loading <Module 2> ...
etc

アプリの新しいバージョンでは、モジュールを複数のスレッドでロードするようになりました。これにより、ロード時間が短縮されますが、まだ時間がかかります。

進捗状況を示すより良い方法は何でしょうか?

4

単一の進行状況バーを表示しないのはなぜですか?ロード中に与えられた情報がその人が何かをするものであるかどうかを自問してくださいに作用します。そうでない場合、それは不要ですです。

ただし、これらすべての情報を表示する必要がある場合は、並べ替えの表として表示できます。このようなもの(しかしもっときれい):

enter image description here

7
JohnGB

単一の進行状況バーで十分なようです。より多くのコンテキストが必要な場合は、「9個中3個のモジュールが正常にロードされました」などの動的テキストメッセージを使用する可能性があります。 MS Outlookの送受信に似ています。

Outlook progress bar

7
smallclub

悪魔の支持者を演じるために、なぜ最初に個々のプログレスバーを表示する必要があるのですか?ユーザーがアプリケーションの起動時間を知る必要がある場合は、すべてのプロセスを説明する単一のアプリケーションバーの方が適しています。

一方、ユーザーが個々のスレッドのパフォーマンスを見て、弱点とボトルネックのある場所を確認する必要がある場合は、視覚的な比較を非常に簡単にする一連のインジケーターが必要です。このため、非常に明確な右端を持つ、互いにできるだけ近くに配置された幅の広い水平プログレスバーを使用します。これにより、どのスレッドが他のスレッドより遅れているか、およびどのようなマージンがあるかを確認するのが最も簡単になります。

5

送信 がそれをどのように処理するかがとても好きです。彼らはお互いをオーバーレイする2つのバーがあります。 暗いものはすべての進捗状況用ですおよび明るいものは現在のタスク用です。明るい方が暗い方の終わりに達すると、暗いバーが進行を増やします。

Transmit Progress Bar

5
Bill Criswell

進行状況を示すためにいっぱいになるn個の円グラフ(スレッドごとに1つ)はどうでしょう。それらがいっぱいになると、色が変わる可能性があります(例:緑)。円は一列に配置されるか、円に配置されます(円の円)。

Multi thread progress!!

(私の配色は素晴らしいものではありませんが、一般的な考えを与えます。)WPFでは一種の単純なものになるでしょう-他のフレームワークではそうではないかもしれません...

4
Ricibob

通常の進行状況バー の何が問題になっていますか?


ただし、面白いローディングステートメントをいくつか追加することもできます。
SOに関する質問

Testing RAM..............OK
Testing CPU..............OK
Testing Primary Disk.....OK
Testing Patience.......FAIL

Testing data on Timmy... ... ...   
We're going to need another Timmy.

Measuring the cable length to fetch your data... 

We're working on making this page load faster
1

あなたはまだ1つの視覚的なインジケーターを保つことができます。

これを解決するには、グローバル書き込みロックを使用する共有メモリ変数を使用します。次に、すべてのモジュール関数がこのステータス変数にアクセスします。

0
EhevuTov