I have a program that roughly does this:
The problem is that the FileSystemWatcher tells you immediately when the file was created. It doesn't wait for the file to be released. For instance, when you copy a large file which takes 3 seconds to copy, so you have to open the file after that.
http://www.codeproject.com/Questions/461666/FileSystemWatcher-issue-in-windows-application Wait until file is unlocked in .NET