タイトル : ファイル監視でフリーズ 投稿日 : 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で調べたのですが、どうしてもわからず 投稿させていただきました。 お忙しい中とは存じますが、ご教授の程、宜しくお願い致します。 |