In my case I am rather careful: Threads do not change GUI directly, and only callback functions set in thread called with SetTimeCallback() monitor every certain time the changes and show them in the GUI.
An additional advantage is that this way the "algorithm" side and the "GUI" side are more isolated, so in some cases the same "algorithm" code/class is called in a command line program and in a GUI one, with no changes.