I have a few questions about displaying progress... 1. What's the best way to do something like the following: I may be in the UI thread. I want to process a loop in a background thread, but block my current execution path, while still letting the world update. This is my use case... NewSystemProgressMorph>>show: aString from: startNumber to: endNumber during: aBlock | progressMorph | progressMorph := self addItemShowing: aString from: startNumber to: endNumber. self recenter. self openInWorld. [ [ progressMorph do: aBlock ] ensure: [ self close: progressMorph ] ] fork. [ progressMorph hasResult ] whileFalse: [ self currentWorld displayWorld. (Delay forMilliseconds: 20) wait ]. ^ progressMorph result I kept the #displayWorld from the old SystemProgressMorph, but it feels like a hack. I can't rely on stepping because I have to block until result is returned. "progressMorph do: aBlock" sets result, protected by a critical section of a Semaphore (I don't know if that's right/safe, just cobbled it together from the old implementation and a little googling). 2. what morphic messages from a non-UI thread have to be wrapped in addDeferredUIMessage:? #delete? repositioning a Morph? Is it any message sent to a morph, or only particular ones. 3. If anyone's using the following SystemProgressMorph functionality, please speak up. It seems overcomplicated and may disappear very soon :) value: newBigNum. - change the max on the fly - when you find there is more to do. bar value: (bar value: #setMax) + 20 - change the max on the fly - when you find there is more/less to do. bar value: (bar value: #setMin) - 20 - change the min on the fly - not sure why you would want to. -- View this message in context: http://forum.world.st/Notify-progress-with-Announcements-instead-of-Exceptio... Sent from the Pharo Smalltalk mailing list archive at Nabble.com.