Ограничения на пути файловой системы? - PullRequest
0 голосов
/ 18 сентября 2018

Я настроил файловую системуwatcher , но получаю странные результаты.Я обнаружил, что если я укажу полный путь к каталогу и включу подкаталоги include, то изменения будут направлены как следует.Но то, что я попытался сделать безуспешно, это установить диск "C:\" в качестве пути с подкаталогами include.

Существуют ли ограничения на использование основного диска в качестве пути?

Я пробовал каждый синтаксис, но не смог.Просто интересно, есть ли там что-то, чего я не знаю ... комментарии приветствуются:)

Вот соответствующий код, если кто-то захочет взглянуть на это.Предложения будут хороши:

<PermissionSet(SecurityAction.Demand, Name:="FullTrust")>
Private Sub WatchFolders()
    Dim myConn As New OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\kgene\source\repos\Test Program\Test Program\Resources\BakDb.accdb")

    MessageBox.Show("setting up watch folders")
    watcher = New FileSystemWatcher With {.NotifyFilter = NotifyFilters.DirectoryName Or NotifyFilters.FileName Or NotifyFilters.Attributes}
    watcher.Path = "c:\"
    watcher.IncludeSubdirectories = True
    watcher.EnableRaisingEvents = True

    AddHandler watcher.Changed, AddressOf LogChange
    AddHandler watcher.Created, AddressOf LogChange
    AddHandler watcher.Deleted, AddressOf LogChange
    AddHandler watcher.Renamed, AddressOf LogChangeR

End Sub

Private Sub LogChange(ByVal source As Object, ByVal e As FileSystemEventArgs)
    Dim myConn As New OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\kgene\source\repos\Test Program\Test Program\Resources\BakDb.accdb")
    Dim cmd As New OleDbCommand

    chkCnt = 0

    Try
        str = "SELECT Base, Target FROM Backup"
        cmd.Connection = myConn
        cmd.CommandText = str
        myConn.Open()
        Dim lstReader As OleDbDataReader = cmd.ExecuteReader()
        If cntPlns = 0 Then
            myConn.Close()
            Exit Sub
        End If
        lstReader.Read()
        Do Until chkCnt = cntPlns
            If lstReader.Item(0).ToString().ToLower() = Path.GetDirectoryName(e.FullPath).ToString.ToLower() Or lstReader.Item(1).ToString().ToLower() = Path.GetDirectoryName(e.FullPath).ToString().ToLower() Then
                If e.ChangeType = IO.WatcherChangeTypes.Changed Then
                    MessageBox.Show("first item changed")
                End If
                If e.ChangeType = IO.WatcherChangeTypes.Created Then
                    MessageBox.Show("first item create")
                End If
                If e.ChangeType = IO.WatcherChangeTypes.Deleted Then
                    MessageBox.Show("first item delete")
                End If
            End If
            If cntPlns = 0 Then
                myConn.Close()
                Exit Sub
            End If
            lstReader.Read()
            chkCnt += 1
        Loop
        chkCnt = 0
        myConn.Close()
    Catch ex As Exception
        chkCnt = 0
        myConn.Close()
        MessageBox.Show("There was a problem conncecting to the database to watch your folders")
        Exit Sub
    End Try
End Sub

1 Ответ

0 голосов
/ 25 сентября 2018

Я переместил

watcher.EnableRaisingEvents = True

после кода, который регистрирует события, как предложил Джими.Это решает проблему, устанавливая отслеживаемые папки для регистрации событий, как и ожидалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...