RubyTkでなにかの監視処理を実施する方法を調べたことのメモです。
RubyTk内でsleepが使えない
RubyTkでは、画面表示のために、Tk.mainloopを持ちいる。
これはメインスレッドで動作するため、 sleepをしてしまうとメインスレッドをその処理占有してしまい、 RubyTkをつかった描写ができない。また、逆もしかりである。
TkAfterをつかう
RubyTkでタイマ制御や定期監視のようなsleepに関わる処理に利用するライブラリがTkAfter.
タイマ制御がTkライブラリに依存してしまうのが個人的には気にくわなかった。なので、別の方法を考える。
Threadをつかう
RubyのThread機能を利用して、別スレッドで定期的な処理を動かす。
定期的な通知には、observerライブラリを利用する。
どちらも実現したいことは同じだけれども、2つめのアーキの方が好きだ。