title: Watch Folder in VB.net/WPF
body: <p>I'm having a problem trying to work out how to watch a folder for changes. This is how far I've got:</p>
  
  <pre><code>Class MainWindow
  
  &lt;PermissionSet(SecurityAction.Demand, Name:="FullTrust")&gt; _
  Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
      Dim Path As String = "C:\Temp"
  
      ' Create a new FileSystemWatcher and set its properties.
      Dim watcher As New FileSystemWatcher()
      watcher.Path = Path
      ' Watch for changes in LastAccess and LastWrite times, and
      ' the renaming of files or directories. 
      watcher.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)
      ' Only watch text files.
      watcher.Filter = "*.txt"
  
      ' Add event handlers.
      AddHandler watcher.Changed, AddressOf OnChanged
      AddHandler watcher.Created, AddressOf OnChanged
      AddHandler watcher.Deleted, AddressOf OnChanged
      AddHandler watcher.Renamed, AddressOf OnRenamed
  
      ' Begin watching.
      watcher.EnableRaisingEvents = True
  
  End Sub
  
  ' Define the event handlers.
  Private Shared Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs)
      ' Specify what is done when a file is changed, created, or deleted.
      MsgBox("File: " &amp; e.FullPath &amp; " " &amp; e.ChangeType)
  End Sub
  
  Private Shared Sub OnRenamed(ByVal source As Object, ByVal e As RenamedEventArgs)
      ' Specify what is done when a file is renamed.
      MsgBox("File: {0} renamed to {1}", e.OldFullPath, e.FullPath)
  End Sub
  End Class
  </code></pre>
  
  <p>The problem is when a change occurs in the folder the program exits with no error code. I've read a few related posts and I know it has something to do with thread safety. However I've no idea how to make this program "thread safe". Can anyone give me some advice? Thanks!</p>