how to implement FileSystemWatcher as a Windows Service ?

Posted on 2009-03-30
Last Modified: 2013-11-07
funwithdotnet mentioned that a good way to improve performance instead of using the file system object per each product in the web catalog, is to implement FileSystemWatcher in a Windows Service.

how to do that?

thanks in advance.
Question by:dimensionav
LVL 14

Accepted Solution

jjardine earned 500 total points
ID: 24025311
this site gives you a tutorial for creating a windows service.  That would be a good place to start.

Author Closing Comment

ID: 31564655
Yes indeed good information, thanks.
LVL 12

Expert Comment

ID: 24045669
I'm probably not the best person to ask about a web service. I've done a couple of 'em, but it's been awhile.

Attached is a sample FileSystemWatcher. It might help.
Imports System.IO

Public Class FileWatcherTool

    Private myWatchFolder As String

    Public myFileWatcher As FileSystemWatcher

    Private myCurrentFileEventArgs As FileSystemEventArgs

    Private myWatchStatus As Boolean = False

    ' This is  a sample FileSystemWatcher project.

    Public Sub New()

        ' Simulate set path.

        myWatchFolder = "c:\path\watchfolder"

        ' Simulate test condition(s).

        myWatchStatus = True

        ' Start watch.


    End Sub

#Region "FileWatcher"

    Private Sub StartWatch()

        If myWatchStatus Then

            myFileWatcher = New System.IO.FileSystemWatcher()

            myFileWatcher.Path = myWatchFolder

            myFileWatcher.NotifyFilter = NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.FileName Or NotifyFilters.DirectoryName

            AddHandler myFileWatcher.Created, AddressOf NewFileCreated

            myFileWatcher.EnableRaisingEvents = True ' start watching

        End If

    End Sub

    Private Sub NewFileCreated(ByVal source As Object, ByVal e As System.IO.FileSystemEventArgs)

        If e.ChangeType = WatcherChangeTypes.Created Then

            myCurrentFileEventArgs = e


        End If

    End Sub

#End Region

    Private Sub Sub1()

        ' Do something.

    End Sub

    ' A handy method ...

    Private Function FileIsReadyForUse(ByVal fileName As String) As Boolean

        Dim output As Boolean = False


            Dim myFS As FileStream = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.None)



            myFS = Nothing

            output = True

        Catch ex As IO.IOException

            'No exclusive access

            output = False

        Catch ex As Exception

            ' Other exception

            output = False

        End Try

        Return output

    End Function

End Class

Open in new window


Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

IntroductionWhile developing web applications, a single page might contain many regions and each region might contain many number of controls with the capability to perform  postback. Many times you might need to perform some action on an ASP.NET po…
Parsing a CSV file is a task that we are confronted with regularly, and although there are a vast number of means to do this, as a newbie, the field can be confusing and the tools can seem complex. A simple solution to parsing a customized CSV fi…
This video gives you a great overview about bandwidth monitoring with SNMP and WMI with our network monitoring solution PRTG Network Monitor ( If you're looking for how to monitor bandwidth using netflow or packet s…
When you create an app prototype with Adobe XD, you can insert system screens -- sharing or Control Center, for example -- with just a few clicks. This video shows you how. You can take the full course on Experts Exchange at

707 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

14 Experts available now in Live!

Get 1:1 Help Now