There's no excuse for a frozen program. Keeping the GUI responsive while doing heavy work is VERY EASY.
Implementing a way to cancel or exit is also very easy. Canceling in a timely manner can be difficult depending on what you do, if there's something blocking, etc.