Karl Ramberg wrote:
I made this method:
progress [[foo getPercentage < 1] whileTrue: [Delay forMilliseconds: 300. progress value contents: ((foo getPercentage min: 1.0) max: 0.0)]] forkAt: Processor userSchedulingPriority
Now I want to terminate it from another method before whileTrue: becomes false.
How do I do that ?
BlockContext>>forkAt: returns a Process, which responds to terminate.
so hang on to its return value:
myProcess _ [ ... ] forkAt: Processor userSchedulingPriority.
and then later:
myProcess terminate.
However, if the call to contents: will change the UI, and you're doing this in Morphic, it would be better to do this inside a step method. Or if you're in 2.9, you can do this:
progress myProcess _ [[foo getPercentage < 1] whileTrue: [Delay forMilliseconds: 300. WorldState addDeferredUIMessage: [ progress value contents: ((foo getPercentage min: 1.0) max: 0.0)]]] forkAt: Processor userSchedulingPriority
You'd still call terminate, of course, but this keeps you from running into problems in Morphic.