■9697 / ) |
Re[12]: System.Timers.Timerでのイベント処理 |
□投稿者/ 魔界の仮面弁士 (513回)-(2007/11/02(Fri) 15:07:35)
|
■No9695 (nbmyou さん) に返信 > 拡張子がaaa(仮)の同名ファイルが同じフォルダに存在するかどうかで判断します。 「*.aaa の名でコピーして、コピー完了後、それを *.xml にリネーム」という手法も見かけます。
> 例えばポーリング間隔が5分と設定された場合、XMLファイルの処理が終わってから5分後に動作するような仕組みということでしょうか。 >(処理に2分かかったとすると、実際には次の処理は7分後となる?) その場合、Sleep 時間を 5 分に設定すれば 7分後になってしまいますが、もっと短い Sleep 時間、 たとえば 15 秒に設定し、そのたびに「5分経過したかどうか」を判定して実行させるようにすれば、 次の実行は(7分後ではなく)5分後〜5分15秒程度の誤差に抑えられるかと。
あとは、ポーリング時間 5 分の間に処理が終わらなかった(たとえば 7 分かかる)場合に、 次の要求が来てしまった場合に、どのような対応を取るべきかも考えておく必要があるかも。 (案1)他の要求も、最大 n 件まで並行で稼働させる。 (案2)処理中の要求を中止させ、ただちに次の要求を開始する。 (案3)処理中の要求を中止させ、次の5分後(つまり10分後)にそれを処理させる。 (案4)処理中の要求が完了後、ただちに次の要求を開始する。 (案5)処理中の要求が完了後、次の5分後(つまり10分後)にそれを処理させる。
|
|