如何知道FileSystemWatcher何时完成

时间:2014-01-09 21:45:18

标签: vb.net visual-studio-2010 filesystemwatcher

以下是我如何使用FileSystemWatcher将PDF从一个位置移动到另一个位置。

Public Sub WATCHER()

    'CREATE NEW FILESYSTEMWATCHER
    Dim Watcher As New FileSystemWatcher()
    Watcher.Path = "<<path>>"
    Watcher.NotifyFilter = NotifyFilters.LastWrite
    Watcher.Filter = "*.pdf"

    AddHandler Watcher.Changed, AddressOf OnChanged
    AddHandler Watcher.Created, AddressOf OnChanged

    Watcher.EnableRaisingEvents = True

End Sub

Private Sub OnChanged(source As Object, e As FileSystemEventArgs)

    'MOVE PDFs TO NEW LOCATION
    For Each foundFile As String In My.Computer.FileSystem.GetFiles("<<path>>", FileIO.SearchOption.SearchAllSubDirectories, "*.pdf")
        Dim foundFileInfo As New System.IO.FileInfo(foundFile)
        'ToolStripStatusLabel1.Text = "Moving PDFs..."
        File.Move(foundFile, "<<path>>" & foundFileInfo.Name) 'MOVES PDFs
    Next

End Sub

我想在移动所有PDF之后继续处理某些内容,比如说msgbox说明所有文件都已被移动。移动完成后会出现一些事件吗?

1 个答案:

答案 0 :(得分:0)

我相信File.Move是一种同步方法。在for循环之后,您可以向用户发送一切已被移动的消息。 File.Move执行时间不会很长,因为它不会在磁盘上移动任何东西,它只会更新文件路径。如果你将File.Move与File.Copy交换掉,你应该看到一个更大的延迟,然后它会向用户发出一切已经完成的消息。