mitk::ProgressBar can be used from threads. The methods "AddStepsToDo" and "Progress" take a bool parameter "callFromThread" for this purpose.
When the parameter "callFromThread" is set, the event which leads to an update of the Qt GUI (visible progress bar) is only posted to the Qt event loop -- i.e. the progress bar update only happens when Qt processes the event loop, which is always from the GUI thread.
Currently, the default value of callFromThread is false.
I suggest changing the default value of callFromThread to true for this reason:
the programmer who implements an MITK filter cannot know in advance whether his filter will be used from a thread or from the "normal thread / Qt's GUI thread". Since using ProgressBar from a thread and setting callFromThread to false inevitably leads to crashes, the only safe assumption of a filter programmer is to assume the filter is called from a thread and set the parameter accordingly.
To prevent everybody from setting this parameter explicitly, I suggest to change its default to true.
I cannot see any side effect. The implementation will be insignificantly slower for non-threaded applications.