Allowing Interruptions

Users sometimes need to stop a command— for example, because it is taking too long. Your application should let users stop commands in progress, even if stopping a command cannot undo or "roll back" all the command's effects.

Guidelines
  • Place a Stop or Cancel button, which can also be activated by pressing Esc, near the progress animation for the interruptable command.
  • Label the button Cancel if the whole operation can be cleanly abandoned with no side effects, leaving the system in the state it was in prior to the operation beginning. Terminate the command immediately when the user presses this button.
  • Label the button Stop if the command can be interrupted, but its effects up to that point cannot (or should not) be reversed. When the user presses this button, open an alert box that warns of the potential side effects of stopping the command. The alert box should have only two buttons: one for continuing the command's processing, and one for immediately terminating it.

Alternatively, you can place the Stop or Cancel button near the control with which the user issued the command that needs to be stopped. Place the button here only if:

  • There is no progress animation for the command, or
  • The progress animation is in a window's status area or in another location that lacks space for a Stop or Cancel button.

In the alert box that appears after pressing a Stop button, ensure the message and button labels in the alert box are specific and precise. Ambiguous button labels can cause users to terminate or continue a command unintentionally. For example, use:

Continue deleting files? [Continue Deleting]
    [Stop Deleting]

rather than

Operation interrupted, continue? [Yes]
    [No]

since in the latter example, it is not clear whether pressing Yes would continue the operation or continue the interruption (i.e. cancel the operation).