- PR -

Timer処理について

1
投稿者投稿内容
harrier
会議室デビュー日: 2004/09/06
投稿数: 3
投稿日時: 2004-10-26 00:27
いつもお世話になっております。

Timer処理(10秒間隔)でサーバ上のあるディレクトリを監視し、
csv形式ファイルが作成されていれば(ファイル数は複数)、
RDBにCSV形式ファイルの内容を更新する…というプログラムをVB.NETで
(Windowsフォーム)開発中です。

ディレクトリ内にまずcsv形式ファイルが何件存在するのか…を、
GetFilesメソッドで取得し、その件数分ループしながらファイル名を取得・
開き中身を取り出して…という手順です。
(処理の終わったcsv形式ファイルは別ディレクトリに移動させます)

もし、N/WやRDB側の問題で最初にこなすべき件数が終わり切らず、
次の10秒が経過してしまった場合、前述のディレクトリ内の件数取得部で
重複して処理しそうなのですが、Timer_Tickイベントは待ち状態に自動的に
なってくれるのでしょうか?

…分かりにくい文面で申し訳ございませんが、どなたかご教示お願いいたします。
せん
ぬし
会議室デビュー日: 2002/03/04
投稿数: 397
投稿日時: 2004-10-26 08:35
VB.NET のことはわかりませんが、プログラミング一般の話としまして。

あるイベントの振る舞いを確認したい、ということであれば実際にサンプルとして
小さなプログラムを書いてみてはいかがでしょうか?

定期イベントにより実行される処理に、定期イベントより長い待ち時間を設定し、
確認したい事と同じ状況を作ることは可能だと思うのですが。
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2004-10-26 09:24
起動時に二重起動を防止するだけでよいのでは
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-10-26 10:06
タイマーを無効にするとか、
コード:
private void timer1_Tick(object sender, System.EventArgs e)
{
    timer1.Enabled=false;

    //処理

    timer1.Enabled=true;
}



フラグで実行中か見るとか、
コード:
private void timer1_Tick(object sender, System.EventArgs e)
{
    if(!flg)
    {
        flg=true;

        //処理

        flg=false;
    }
}



メソッドを一旦イベントから切り離すとか、
コード:
private void timer1_Tick(object sender, System.EventArgs e)
{
    timer1.Tick -= new System.EventHandler(timer1_Tick);

    //処理

    timer1.Tick += new System.EventHandler(timer1_Tick);
}



なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2004-10-26 11:32
System.Windws.Forms.Timerの方なら少なくとも動作上ありえないと思います。
※Application.DoEvents()とかしてるなら注意が要るかも。

10秒間隔が絶対でないのなら、最初にとめてしまえばいいでしょう。
絶対というのは、処理完了から10秒後でいいのならということです。
harrier
会議室デビュー日: 2004/09/06
投稿数: 3
投稿日時: 2004-10-26 23:49
皆様、お忙しい中、色々とご指導有難う
ございました。
それぞれに参考にさせて頂きたいと思います。
有益な情報誠に有難うございました!
1

スキルアップ/キャリアアップ(JOB@IT)