One of the main tenets of user interface design, is that the user needs to feel in control, and mostly, that they are in control of their time.
There are basically the following ways of dealing with delays in a system:
- block part of the UI
- show estimate or progress
- notify on results
The first is normally used for tasks running for less than about 10 seconds, the second for tasks running at most for a minute or two, and the last for tasks that run for more than a minute.
We tend to differentiate between active and passive waiting time, active being the user empowered to do something else.
Examples for long running tasks are found in torrent clients, or youtube video uploads. Most of these show progress, but also notify you when the task is finished.
Sometimes we don’t know how much a task is going to take, so we show progress by other means, this is the case of antivirus software, which tell you how much was already done, not how much is left. Some software tell you the number of elements already processed out of a total number of elements, even if the processing time for each element is uneven. A lot of applications try to guess the time required, often letting the user down when more time is actually needed (typical: youtube uploads standing on 95% for twice the time it took to reach 95%)
It is nevertheless advisable to:
- tell the user a minimal estimate so they know they can have a coffee and cigarette break
- give notification (audio, web notification, email) when the task is done
- let them do as much as possible.
A way to do this would be to disable the window with a modal layer telling them that processing is in place, and it should take at least 10 minutes, so if it started at 8:43 PM, tell them results are not to be expected before 8:53 PM. Also, provide a way to close this window and focus on different parts of the user interface.
The UI elements leading to this window should tell them that processing is in place and when it is expected.
Some form of notification (at least, an audible “ding”) should be sent when the process was finished, with the UI elements changed, and some form of notification displayed in a designated screen area or method.
There was a wonderful series of articles by Denys Mishunov about time management in applications called “Why Performance Matters”, the last part being here: