mix IDE M2

Integrated debugger;
Hit F5 and you can step forwards/backwards through execution.

So, this is very important. Agreed, we want a design pattern which will guarantee the user interface is responsive.

Qt has an API for what you've described. Using MVC w/Qt widgets along with signals, slots, and QThread looks robust. If one creates a data model for the user interface widgets, then a QThread can have signals, which in-turn, callback to a slot on the main thread.

http://qt-project.org/doc/qt-5/qtcore-queuedcustomtype-example.html
http://qt-project.org/doc/qt-5/model-view-programming.html