If the SystemFileWatcher doesn't work then polling is the only viable option.
Try something like this:
Timer _timer = new Timer(5000);
string _path = GetPathToWatch;
public FileWatcher(){
_timer.Elapsed += TimerOnElapsed;
_timer.Start()
}
string[] _fileList = null;
private void TimerOnElapsed(object sender, ElapsedEventArgs elapsedEventArgs)
{
DirectoryInfo di = new DirectoryInfo(_path);
string[] newFileList = di.GetFiles()
if(_fileList !=Null)
{
string[] newfiles = newFileList.Except(_fileList);
foreach(string newFilePath in newfiles){
}
}
_fileList = newFileList;
}