I recently created something that is almost exactly what you are describing. At first I thought I should use the FileSystemWatcher. Problem is it only notified me of things as they happened. If the service was down and had to be restarted for whatever reason, when it started up it did not fire any events regarding the files that have been created while the service was down.
So I stared writing my own poller that would check for files at startup of the service and then use the FileSystemWatcher. I then started thinking, why even bother with the FileSystemWatcher anyways and have 2 pieces of code to maintain? So I dropped it completely and just have my poller do it all since the app just needs to do what the poller did at the startup over and over.
My app is a windows service. The OnStart creates a thread that runs a function to do the polling. That function is just a while loop with an end condition triggered by the OnStop and it just polls every minute and scans the directory. If it finds something it deals with it, if not it sleeps for 1 minute. Pretty simple. The code is basic and easy to maintain as well.
Here is a sample of my OnStart:
protected override void OnStart(string[] args)
{
WriteToLog("Starting...");
bThreadRun_m = true;
tMain_m = new Thread(new ThreadStart(RunThread));
tMain_m.Name = "Main Thread";
tMain_m.Start();
WriteToLog("Start Complete");
}