高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

バグは、出るべくして…

 Delphi版TWatchをいじっていたんですが、どうも時報をサブスレッドでならそうとした時点で動作が怪しくなります。一回だけならいいんですが、TClockなどのように時間の回数(2時=2回)ならそうとすると、スレッドが一番効率的です。確か以前は無理矢理やった記憶もありますが…。何がおかしいのか分かりませんが、応答なしになって、タスクマネージャでも終了できなくなって、何度かやってるとPCがリセット(9xでCtrl+Alt+Deleteを二度押ししたときと同じ、強制再起動)されるというのには、かなりドキッとしました*1
 これはある種(というかどう見ても)逃げですが、こういうのはC#の方が楽かも…。とりあえず最低限気をつければ、メモリリークもリセットもなさそうですし。WndProcがいじりにくい(プロテクトメソッドだし)のはちょっとつらいですが。痛いのは、.NETという時点でメモリを消費すると言うこと。まあ、バグって落ちるよりはましか…。

 こういうところではJAVAが(というよりJBuilderが)便利だったなぁ…。いちいちクラスを登録しなくても、init部にコンポーネントの生成コードを書いておけば、赤い四角で表現されてるし。C#でもSharpDevelopを改造するとか、方法はあるでしょうが。


 C++も使えるし、Interopも使えるし…、サブクラス化も、システムフックも、可能なのかなぁ…(フックDLLが容量を食うって言うのなら、そこだけDelphiでもいいし)。

*1:PCのリセットは、電圧異常やハードの不具合が、偶然重なったのかも知れませんが