tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル ファイル監視でフリーズ
投稿日: 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で調べたのですが、どうしてもわからず
投稿させていただきました。


お忙しい中とは存じますが、ご教授の程、宜しくお願い致します。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。