[Squeak-ja: 3826] Re: ループしているプロセスの停止について

Masashi Umezawa umejava @ mars.dti.ne.jp
2008年 2月 15日 (金) 13:53:26 JST


こんにちは
梅澤です。

すでにループしてしまっているイメージをなんとか救いたいということでしたら、
私であればまず、LineMorphのopenInWorldを一時的にoverrideします。

LineMorph>>openInWorld
    ^self

その後で、ProcessBrowserを使ってプロセスを殺します。
Worldメニューのデバッグ->open process browserです。

優先度40のプロセスがおそらく2つ上がっていると思います。the UI processの
ほうはMorphicのおおもとのループですから止めてはいけません。

Delayでwaitしながら進んでいるプロセスを選択してterminateさせます。

プロセスを殺した後で、LineMorphのopenInWorldを消しておけばよいでしょう。

ProcessBrowserについて詳しくは「自由自在」の12章です。

久保 道 <kubo-o @ mbox.kyoto-inet.or.jp> wrote:
> 阿部さん、さっそく教えていただいて、
> ありがとうございました。
> ただ、前回書きましたように私の場合は、
> ご指示くださったように
> 「まずは変数に入れたほうが良い」という点が
> できていなかったので、困っています。
> 最終的には必要なcodeだけ取り出して
> 別につくりなおすことにします。
> お返事遅れて失礼いたしました。
> 久保 道
> -----Original Message-----
> From: squeak-ja-bounces @ smalltalk.jp [mailto:squeak-ja-bounces @ smalltalk.jp]
> On Behalf Of Kazuhiro ABE
> Sent: Thursday, February 07, 2008 4:14 PM
> To: Squeak discussion in Japanese
> Subject: [Squeak-ja: 3816] Re: ループしているプロセスの停止について
> 
> 阿部@新百合です。
> 
> いきなりforkを送ると、あとでそのプロセスを捕まえにくくなるので、まずは変
> 数に入れたほうが良いと思います。
> 
> arm := LineMorph from: 290 @ 300 to: 710 @ 300  color: Color black width: 5.
> process := [[ arm openInWorld.
>    ( Delay forSeconds: 1) wait] repeat] newProcess.
> process resume
> 
> これを終了するときは以下のようにします。
> 
> process terminate
> 
> 他どのようなメソッドがあるかはProcessクラスのインスタンスメソッドを見てく
> ださい。
> forkは単なる予約語ではなく、メッセージですから、ブロックにforkを送ったと
> きになにが起こっているかを考える必要があります。
> ワークスペースなどでforkを選択し、Alt+bを押すとその定義を調べることができ
> ます。
> せっかく中身を参照できるわけですから、今回の問題に限らず、分からないこと
> があったら、中を調べてみるのは良い習慣だと思います。
> 
> また、自由自在では一章を費やして並行処理について解説しています(第12章)。
> 
>  //abee
> --
> 阿部 和広  EMAIL abee @ squeakland.jp
> 
> No virus found in this incoming message.
> Checked by AVG.
> Version: 7.5.516 / Virus Database: 269.19.21/1267 - Release Date: 2008/02/08
> 20:12
> 
> 
> No virus found in this outgoing message.
> Checked by AVG.
> Version: 7.5.516 / Virus Database: 269.20.5/1279 - Release Date: 2008/02/14
> 18:35
> 



---
[:masashi | ^umezawa]


Squeak-ja メーリングリストの案内