監視プログラムについて
- 題名: 監視プログラムについて
- 著者: こう
- 日時: 2006/02/17 13:52:32
- ID: 15069
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: 監視プログラムについて
- 著者: 渋木宏明(ひどり)
- URL: http://hidori.jp/
- 日時: 2006/02/17 15:07:49
- ID: 15072
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: 監視プログラムについて
- 著者: こう
- 日時: 2006/02/17 17:02:26
- ID: 15078
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
いつもお世話になります。
今回監視プログラムの方を作成しているのですが
どうもおかしな部分があります。わかる方がおら
れましたら宜しくお願いします。
内容:あるプログラムからあるフォルダー内にテキスト
ファイルが作成されるのですが、作成されたら
自動に(監視部分)その内容を読み取ってある形式
で変換をかけてその内容を新規ファイルに出力する
といったプログラムを作成しています。
(作成された最初のファイルは最後に削除します。)
問題点:フォルダーにテキストファイルを作成したところ
問題なく新規ファイルが作成されるのですが、何度も
連続で同じことを繰り返したところ下記のようなエラー
がでてしまいます。
system.IO.IOException のハンドルされていない例外がmscorlib.dll
で発生しました。
追加情報:プロセスファイルは"D:\〜"にアクセス出来ません。他のプロセス
が使用中です。
とでます。 決まった時にこのエラーが出るのではなく何度かやっていると
たまに発生します。
下記にソースを載せます。
Public Sub Search_file()
Dim watcher As New System.IO.FileSystemWatcher()
'watcher.SynchronizingObject = Me
'監視するディレクトリを指定
watcher.Path = "D:\a"
'*.txtファイルを監視、すべて監視するときは""にする
watcher.Filter = "*.txt"
'ファイル名とディレクトリ名の変更を監視
watcher.NotifyFilter = IO.NotifyFilters.FileName Or _
IO.NotifyFilters.DirectoryName
'サブディレクトリは監視しない
watcher.IncludeSubdirectories = False
'必要に応じてバッファサイズを変更
'watcher.InternalBufferSize = 4096
'同期的に監視する
Dim changedResult As System.IO.WaitForChangedResult = _
watcher.WaitForChanged(IO.WatcherChangeTypes.All)
'結果を表示
'MessageBox.Show(changedResult.ChangeType.ToString & _
' ":(file)=" & changedResult.Name & ":(old file)=" & _
' changedResult.OldName)
'テキストファイルの存在の有無
If System.IO.File.Exists(System.Configuration.ConfigurationSettings.AppSettings("file")) Then
Dim sr As New System.IO.StreamReader(System.Configuration.ConfigurationSettings.AppSettings("file"), System.Text.Encoding.GetEncoding(932))
'内容をすべて読み込む
Dim s As String = sr.ReadToEnd()
'閉じる
sr.Close()
Dim sw As New System.IO.StreamWriter(System.Configuration.ConfigurationSettings.AppSettings("file1"), False, System.Text.Encoding.GetEncoding(932))
'変換後の内容をすべて書き込む
sw.Write(PWD_CONV(s))
'閉じる
sw.Close()
System.IO.File.Delete(System.Configuration.ConfigurationSettings.AppSettings("file"))
End If
'再起コール
Search_file()
End Sub
'計算部分
Private Function PWD_CONV(ByVal Pass As String) As String
Return CtolCrypt.DecryptStringForOEC(Pass)
End Function
わかる方がおられましたら宜しくお願いします。