C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 22 を表示中)
■9695 / )  Re[11]: System.Timers.Timerでのイベント処理
□投稿者/ nbmyou (49回)-(2007/11/02(Fri) 14:06:07)
2007/11/02(Fri) 14:08:35 編集(投稿者)

No9690 (Tom Yama さん) に返信

回答ありがとうございます。

> タスクスケジューラを使うという手は、ないのでしょうか?

なるほど。今回はWindowsサービスで作成するという仕様なのですが、
タスクスケジューラというものを使用するという方法もあったのですね。
情報ありがとうございます。


No9691 (なちゃ さん) に返信

回答ありがとうございます。

> ありだと思いますけど調整はさらに面倒が増えると思いますよ。

そういうものなのですか?
タスクスケジューラというものの存在自体今回初めて知ったのですが、
いろいろ情報をいただけると、今後のためにもとても勉強になります。
どうもありがとうございます。


No9692 (PATIO さん) に返信

回答ありがとうございます。

> 気になったんですが、問題のXMLファイルはファイル名固定で1ファイルしかできないのでしょうか?

すみません。そういう情報が抜けていました。
+++++++++++++
XMLファイルはファイル名固定ではなく、複数のファイルが監視フォルダに置かれることを想定しています。
別に作成してあるプログラムからXMLファイルを出力するので、
基本的にはユニークな名前となるはずですが、監視フォルダ自体は特にアクセス制限をかけるわけではないので、
手動で同名ファイルが置かれることも考えられます。

また、XMLファイルが作成途中(例えば大容量のファイルで、監視フォルダへのコピーに時間がかかっている状態)ではないことの判断は、
拡張子がaaa(仮)の同名ファイルが同じフォルダに存在するかどうかで判断します。
+++++++++++++

> ファイル名がユニークになるように振られて複数ファイル共存可能であるとして
> ファイルが作成されて処理するまでの時間にシビアな物が無いなら
> 単純に処理中だったら何もせずに素通りして次のイベントで処理でも良いのではと
> 感じました。実際のXMLファイルの処理に掛かる時間にどれくらいを見込んでいて
> インターバルタイムをどの程度で考えているのかで複雑さも変わりそうです。

はい、イベント処理中に次のタイマイベントが発生した場合、後のイベントは何も処理しないように作成しようと思っています。
ただ、ポーリング間隔・監視フォルダ・バックアップフォルダは、
XMLかini形式の「設定ファイル」で自由に設定できる(デフォルトは5分程度)ように考えているので、
この設定によって間隔が短くされる可能性がある状態です。

> 処理スピードがファイルを置くスピードよりも十分に速い事が保障できるのであれば、
> 仕組みを簡略化する事も可能でしょうし。

特に保障できるかは定かではありませんが、
簡略化するとは、たとえばどのような方法がありますでしょうか。

> シングルスレッドでSleepを使ってタイミングを取るようにすれば、
> 別に二つ同時に動く心配も要りませんからね。
シングルスレッドでSleepを使うということは、
例えばポーリング間隔が5分と設定された場合、XMLファイルの処理が終わってから5分後に動作するような仕組みということでしょうか。
(処理に2分かかったとすると、実際には次の処理は7分後となる?)
できれば、5分と設定したら、5分ごとに処理が行われるようにしたいので、
それであればSleepを使う方法は、今回は避けようかと思っています。
返信 編集キー/


管理者用

- Child Tree -