今日もお仕事(?)

2001年4月30日
 朝早く起きる。
で、しばらくゲーム。
それから昨日の日記を書く。

 で、一眠り。

 起きてシャワーを浴びてから会社へ。

 で、仕事SW の作業。
システムを停止したり、
稼働中に終了したりするときに
落ちたりすることへの対策。

 まず、稼働状態からいきなり終了させると
DB へのConnection Object を
閉じるときにエラーが出る問題への対応。
調べていると、 Object の解放を
Window の Close のタイミングではなく、
Destroy のタイミングで行っていたのが原因。
で、Destroy のタイミングでは COM の接続が
勝手に切られているためのようだ。
う〜〜〜〜、終了時の処理で
Close のタイミングで行っていいことは
Close のタイミングですることは Windows の基本やんかぁ(爆)。
前に Thread の停止時に落ちていたのもこれが原因やろう。
なんで気づかなかったんだ・・・。

 途中で床に寝っ転がって寝る。
お腹がすいたのでマクドに買い出しに行ったが、
混んでいたのでとんかつ屋で食べる。
帰ってきてまた床に寝っ転がって一眠り。

 停止のタイミングによっては無限ループに陥るので、
ループ脱出の条件に GetTickCount を使ったタイムアウトを追加。
一応 Count が一巡した場合の処理も入れておいた。
(49.7日で一巡するらしい。そのクリアされる前後10秒のタイミングで
システムを停止する場合で無ければ問題は発生しないが(爆)。
だいたい、とてもそれだけの時間安定して稼働する
システムとは思えない(爆))
そして、同じロジックで別のところにも
処理の終了を少し待つ Wait を入れた。
で、テスト。・・・・・。Hung Up した。
なんでやねん。
Debugger を使って調べる。
変数の値は Timeout する値になっている。
「監視式」機能で差を出すと、Timeout の閾値を越えている。
さらに、Timeout よりも大きいかという比較式では true になっている。
・・・true? わぁ、while文の中に継続条件ではなく
終了条件書いているぅ(爆)。
い、いやぁ、優秀な Debugger があると便利ですね〜。
(そういうレベルの問題では無い。)

 侍魂(リンク) の日記を
見て腹をかかえつつちんたら仕事して
多分安全にシステムが終了するようになった。
(多分・・・ってとこがあやしい。)
 22時を過ぎて退社。

家に帰って「かえるにょ国にょアリス」や「特単」をしてから寝る。


コメント