タイトル | : ファイル監視でフリーズ |
記事No | : 9149 |
投稿日 | : 2009/07/08(Wed) 16:17 |
投稿者 | : まつ |
いつもお世話になっております。VisualStudio2008で開発しております。
今回、ファイル監視プログラムを作成したところ 大凡、期待した通りの動きになりました。
しかし、1度、監視していたファイルの変更などを受け取ると 非同期のはずが、画面がフリーズしてしまい、その後、変更等を受け取る事ができなくなります。 1回目だけが正しい動きで、そのままフリーズし、以降の変更は受け付けません。
非同期で作成し、Form上で以下を記述しております。
監視するファイル等の設定後、 AddHandler watcher.Changed, AddressOf DoWork watcher.EnableRaisingEvents = True
Shared Sub DoWork(ByVal source As Object, ByVal e As FileSystemEventArgs) Select Case e.ChangeType.ToString()
Case "Changed"
'変更されたファイルが使用可になるまで待つ Dim st As Stream = Nothing Dim maxCount As Integer = 100
Dim i As Integer For i = 0 To maxCount - 1 Try st = File.Open(e.FullPath, FileMode.Open, FileAccess.Read, FileShare.None) If Not st Is Nothing Then Exit For End If Catch ex As Exception System.Threading.Thread.Sleep(1000) End Try Next If Not st Is Nothing Then '使用可になったのでコマンドを実行 st.Close() Shell("cmd.exe /c """ & Form1.txtCmdChange.Text & """", AppWinStyle.Hide, True) Form1.lblMessage.Text = Now() & " 監視ファイルが変更されました。"
Else ' タイムアウト End If
何故、フリーズしてしまい、次回からの変更を受け付けないのか Googleで調べたのですが、どうしてもわからず 投稿させていただきました。
お忙しい中とは存じますが、ご教授の程、宜しくお願い致します。
|