In the old version of our application, the operations performed during loading were sequential. We indicated progress by updating a single-line text string with the component that was being loaded. Eg:

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

In the new version of our app we now load the modules in multiple threads, which speeds up the loading times, but still takes a while.

What would be a better way to indicate progress?

  • Is the new one a GUI or a text-based interface?
    – Erion
    Commented Oct 5, 2011 at 2:07
  • It's a gui interface. Commented Oct 5, 2011 at 2:57

7 Answers 7


Why not show a single progress bar? Ask yourself whether the information given while loading is something that the person will act on. If not, then it isn't needed.

If however, you need to show them all this information, you can show it as a table of sorts. Something like this (but prettier) maybe:

enter image description here


It does seem like a single progress bar would be sufficient. If more context is necessary, perhaps use a dynamic text message like "3 of 9 modules have loaded successfully". Similar to MS Outlook Send/Receive.

Outlook progress bar


To play devil's advocate, why do you need to show individual progress bars in the first place? If the user just needs to know how soon the application will start, a single application bar that accounts for all processes would be better.

If, on the other hand, the user needs to look at the performance of individual threads, and see where there are weaknesses and bottlenecks, you need a set of indicators that make visual comparison very easy. For this, I'd use wide horizontal progress bars situated as close to one another as possible, with very clear right-hand edges. This makes it easiest to see which threads are trailing behind others, and with what sort of margin.


I'm very fond of how Transmit handles it. They have two bars that overlay each other. The dark one is for over all progress and the light one is for the current task. When the light one reaches the end of the dark one the dark bar increments its progress.

Transmit Progress Bar

  • That's a nice pattern, but it wouldn't work well unless the bar was constantly filling. If I saw that pattern when it was static, I'd be a bit confused. I'd probably assume the white bar was 'finished' work, and the grey bar was 'in progress' (as it's translucent in the context of your example). Good answer, though. Commented Oct 6, 2011 at 14:51

How about n circle pie charts (one for each thread) that fill up to show progress. When they are full they could change color (eg to green). The circles could be layed out in a line or arranged in a circle (circle of circles).

Multi thread progress!!

(My color scheme not great but gives the general idea..) Would be kind of straight forward in WPF - maybe not so under other frameworks...

  • If you upload it somewhere and post the URL, we'll add it for you. :-) Commented Oct 6, 2011 at 23:37
  • 1
    @Patrick - Cheers - but someone was kind enough to upvote so I now have a (~)weighty "11" reputation - so enough to post an image!
    – Ricibob
    Commented Oct 6, 2011 at 23:56

What's wrong with an ordinary progress bar?

You could add some funny loading statements, though.
Inspired by question on 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

You could still keep one visual indicator.

You solve this by having a shared memory variable that uses a global write lock. All your module functions would then right to this status variable.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.