Put the solving in its own thread
It's how works the visualization itself, but it seems less obvious how to implement it for something that the return value is important.
One way to go could be to run the full update sequence into a thread, and disable the run button when on update.
Need indications that the update is running, so the freeze/error occuring when a second one is asked is not a surprise.
Edited by BOURNEUF Lucas