Is it thread safe?

  • Thread starter Thread starter dinny
  • Start date Start date
D

dinny

In the filesystemwatcher help page (overview) there is a vb sample
which prints on a console windows. I want to change slightly this
sample so that instead of using a console window, I use a textbox.
My question is if the program will remain thread safe. Here is the
program as it appears in the help page: My plan is to use it in the
Form1 class instead of the Watcher class.

Public Class Watcher

Public Shared Sub Main()
Dim args() As String = System.Environment.GetCommandLineArgs()
' If a directory is not specified, exit the program.
If args.Length <> 2 Then
' Display the proper way to call the program.
Console.WriteLine("Usage: Watcher.exe (directory)")
Return
End If

' Create a new FileSystemWatcher and set its properties.
Dim watcher As New FileSystemWatcher()
watcher.Path = args(1)
' 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

' Wait for the user to quit the program.
Console.WriteLine("Press 'q' to quit the sample.")
While Chr(Console.Read()) <> "q"c
End While
End Sub

' Define the event handlers.
Private Shared Sub OnChanged(source As Object, e As FileSystemEventArgs)
' Specify what is done when a file is changed, created, or deleted.
Console.WriteLine("File: " & e.FullPath & " " & e.ChangeType)
End Sub

Private Shared Sub OnRenamed(source As Object, e As RenamedEventArgs)
' Specify what is done when a file is renamed.
Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath,
e.FullPath)
End Sub

End Class
 
Forget about events, everything (handlers) are just in same thread which
impossibly responds more than one events at same time.
 
Forget about events, everything (handlers) are just in same thread which
impossibly responds more than one events at same time.

How do you know ?
 
Let's say: According to .NET, all static (shared in vb.net) methods are
thread safe.
 
dinny,

Seems I made a lot of mistakes. Right now I am not sure the question so that
I reclaim my previous opions.
Another thing is you can use control.invoke method to guarantee thread safe.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Back
Top