|
まず、はっきりさせておくべき事は、今回提示のルーチンを
どういう意図で前任者が作成したのかということで、
前任者が居ない(連絡が取れない等)ので、その意図は、
ルーチンから推測するしかないのです。
で、私がルーチンから判断したのは、
・Executeについては、非同期で実行されていると前任者が判断し、
^^^^^^^^^^^^
非同期でも確実に1ステップずつ終わらせるように組まないと、
このルーチンは正常に終わらないと考えた。
(作成した当時のマシンスペックや、ネットワーク処理速度、
処理するデータ量の大きさ等で)
# 前任者がどの資料をみて、どういう観点でそう判断したのかは
# 私は推測しか出来ません。
・プログラム制御の場合、非同期だと、前述したように、Execute
処理が重なり、正常な結果が返らないと判断したので、
オペレーティングシステムに制御を渡し、1個のExecute処理が
終わってプログラムに制御が戻り、次のExecute処理を実行する
ようにするために、1個1個DoEventを入れた。
# 重ねて言うけど、現在がどう、ではなく、まず「前任者の意図」を
# 読取る必要があるという事。
ただ、プログラム実行環境及び、プログラムを実行するユーザの
意識が変わり、「現在の処理スピードではダメだ」と思い、
今回の質問になった。
で、実際にDoEventが必要なのかどうかについては、
・実際に「個々のExecute処理にかかる時間」を計測し、
「全体を通しで実行した時の処理にかかる時間」と比較し、
非同期処理による、個々の処理が重なるタイミングが発生して
いるのかどうか?
という点を調べるのが一番良い気がしますね。
(個々の処理を計測する場合、個々の処理の間の時間が計測でき
ないので、その辺りは計測修正値として考慮する必要が生じ
ますが。)
今思いついているのは、だいたいこんな所。
# 私の意図は分かりますか?>小僧さん
|
|