VB6 的あぷろーち
で、とあるアプリケーションをカスタマイズすることになって、ソースを見てみた。動かしてみた。
いくつものテキストファイルをDBへインポートするアプリなので、テキストを読み込む間、それをワークテーブルへ追加する間、さらにそのデータを加工してマスタテーブルへ入れなおす間とけっこう時間がかかる。
VB6 なのでその間、ずっとただ固まってるだけだろうと思ったら、これがいちおうユーザの操作に応じてくれる。ボタンは押せないように disabled なのだけどコンボボックスとかテキストボックスとか、関係ないところは入力できたりする。ウィンドウを動かしたりもできる。
こういうのをつくれと言われたら、わたしならとりあえず System.Threading をインポートする。でも、ソースコードにスレッドのすの字もない。 VB6 のぱらだいす。
どうやってこんなマルチスレッドライクなことを、と思ったら、テキストをちょっと読み込むたび、 insert を発行するたび、たびたび Application.DoEvents() を呼んでいるだけだった。とにかくイベント実行しまくり。
びっくりした。こんなやりかたがあっただなんて目からうろこ。真似したくはないけど、工夫ってすばらしいと思った。
なお、スレッド関係についてだめだめな認識具合なのは自覚しているので、おかしいと思ってもいじめるのはやめて欲しいと思う今日この頃。