- - PR -
【ディレクトリの監視】 FileSystemWatcherクラスについて
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-11-29 19:58
初めまして、木村と申します。
よろしくお願い致します。 監視対象のフォルダに作成された圧縮ファイルに対して 展開する処理を行ないたいのですが、 ファイルのコピーが完了する前に展開処理が走ってしまいます。 ファイルのコピー/移動が完了するのを待ってから、展開処理に移す方法 がございましたらご教授願います。 Private watcher As New System.IO.FileSystemWatcher() Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click '監視するディレクトリを指定 watcher.Path = "C:\" watcher.NotifyFilter = _ (IO.NotifyFilters.LastAccess Or IO.NotifyFilters.LastWrite _ Or IO.NotifyFilters.FileName Or IO.NotifyFilters.DirectoryName) watcher.Filter = "" AddHandler watcher.Created, AddressOf OnChanged watcher.EnableRaisingEvents = True End Sub 'イベントハンドラ Public Shared Sub OnChanged(ByVal source As Object, _ ByVal e As System.IO.FileSystemEventArgs) Select Case e.ChangeType Case IO.WatcherChangeTypes.Created 'ここに展開処理を加えました −−−−−−−−−−−−−−−−−−− 'ファイルがPUTされた瞬間に展開処理が走るため、 '不完全なファイルに対して展開を試みてしまいます。 End Select End Sub 以上、よろしくお願い致します。 木村 | ||||
|
投稿日時: 2004-11-29 21:13
createdの後にchangedが断続的に発生するようですが、
それを捕らえてchangedが発生しなくなったら、 とするのかなぁ。 | ||||
|
投稿日時: 2004-11-29 21:16
確実な方法は無さそうです。 すぐに思いつくのは ・xxxという名前のファイルが作成されたら展開処理を開始 ・展開処理を終了したらXXXを削除 のようなファイル交換の手順を取り決めるか、 ・別途タイマーなどを用いて、転送ファイルが書き込み可能オープンできるまで待つ とか。 _________________ // 渋木宏明 (Hiroaki SHIBUKI) // http://hidori.jp/ // Microsoft MVP for Visual C# // // @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/ | ||||
|
投稿日時: 2004-11-30 12:59
返信ありがとうございます。
WaitHandleクラスが使えるかと思い、MSDNを漁っておりますが、 良さそうなサンプルが見つけられません。 もし、参考になるページをご存知の方がおられましたら、 教えていただけないでしょうか。 以上、 ひろ | ||||
1
