Hi Doug,

If you run your code in a workspace with 'do-it' command, it runs in the UI 
smalltalk process and the only way to cancel it is the cancel key
You shoud run your code in a separate process like:
  x := MyClass2 new
  [x myLoop ] forkAt: Processor systemBackgroundPriority.
forkAt:... forks the block in another smalltalk process.
like this you will be able to tell your x object to stop looping from your 
workspace (by setting a boolean in your object's member), or you could 
terminate it or debug it with the Process browser.
HTH,

Cheers
Alain


"DougEdmunds" <[email protected]> a écrit 
dans le message de news: [email protected]...
>I created a class that generates an endless loop. For this example, the 
>loop
> just prints 1-10, back and forth. I'd like to stop the loop by using code,
> but when it is running, I can't type anything in a workspace.  The only 
> way
> I can stop it is by a manual interrupt (on XP, using Alt-<period key>)
>
> Typical run:
> x := MyClass2 new.
> x myLoop.
>
> I want to type "x stopLoop" which would set the running variable to false.
>
> How do I do this?
>
> --------
>
> 'From Pharo1.3a of ''18 January 2011'' [Latest update: #13144] on 21 April
> 2011 at 12:59:14 pm'!
> Object subclass: #MyClass2
> instanceVariableNames: 'running'
> classVariableNames: ''
> poolDictionaries: ''
> category: 'Sandbox0419'!
>
> !MyClass2 methodsFor: 'as yet unclassified' stamp: 'DougEdmunds 4/21/2011
> 12:54'!
> initialize
> super initialize.
> running  := true.
> Transcript clear.
>      Transcript show: 'try to stop the loop somehow' .
> ! !
>
> !MyClass2 methodsFor: 'as yet unclassified' stamp: 'DougEdmunds 4/21/2011
> 12:54'!
> myLoop
>
>    "running is an instance variable, initialized to true."
>
> | x up |
> Transcript clear.
> x := 1.
> up := true.
> [Transcript show: x; cr.
> x >= 10 ifTrue: [up :=false].
> x <= 1 ifTrue: [up := true].
> up ifTrue: [x := x + 1] ifFalse: [x := x - 1].
> (Delay forSeconds: 1) wait.
> running ifFalse: [^ x].
> ] repeat.
> ! !
>
> !MyClass2 methodsFor: 'as yet unclassified' stamp: 'DougEdmunds 4/21/2011
> 12:55'!
> stopLoop
> running := false.
> ! !
> --------
>
> --
> View this message in context: 
> http://forum.world.st/How-to-break-out-of-endless-loop-using-code-tp3466747p3466747.html
> Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
>
> 




Reply via email to