FileSystemWatcher verliert Dateien in seiner WarteschlangeC#

Ein Treffpunkt für C#-Programmierer
Guest
 FileSystemWatcher verliert Dateien in seiner Warteschlange

Post by Guest »

Ich habe einen FileSystemWatcher geschrieben, um für jede Datei einmal ein PGM aufzurufen. Aber einige meiner Dateien sind verloren. Ich habe den Code mit nur 10-11 Dateien getestet. Das Löschen einer Datei wird korrekt protokolliert, nicht jedoch die Erstellung. Einige der Dateien werden nicht protokolliert. Gibt es möglicherweise ein Problem bei meiner TASK-Implementierung?
oder gibt es ein Problem mit dem Windows-Dienst?

Code: Select all

 public static FileSystemWatcher m_Watcher;
static BlockingCollection blockingCollection = new BlockingCollection();

protected override void OnStart(string[] args)
{

current_directory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
//XmlDocument xml = new XmlDocument();
try
{
strDir = ConfigurationManager.AppSettings["Directory"];
fileMask = ConfigurationManager.AppSettings["FileMask"];
strBatfile = ConfigurationManager.AppSettings["Batch"];
strlog = ConfigurationManager.AppSettings["Log"];

m_Watcher = new FileSystemWatcher();

m_Watcher.Filter = fileMask;
m_Watcher.Path = strDir + "\\";
m_Watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName;

m_Watcher.Created += new FileSystemEventHandler(OnCreated);

m_Watcher.Deleted += new FileSystemEventHandler(OnDeleated);
m_Watcher.Renamed += new RenamedEventHandler(OnRenamed);

m_Watcher.EnableRaisingEvents = true;
}
catch (Exception exception)
{
CustomException.Write(CustomException.CreateExceptionString(exception.ToString()));
}

}
public static void OnDeleated(object source, FileSystemEventArgs e)
{
try
{

Log.getLogger("File deleated- Filename :" + e.Name + " at timestamp : " + DateTime.Now.ToString(), strlog);
}
catch (Exception exception)
{
CustomException.Write(CustomException.CreateExceptionString(exception, e.Name));
}
}

private static void OnCreated(object source, FileSystemEventArgs e)
{

var exceptions = new ConcurrentQueue();

try
{

Task.Factory.StartNew(() =>
{
try
{

blockingCollection.Add(e.Name.ToString());

}
catch (Exception)
{
throw;

}

});
Task.Factory.StartNew(() =>
{
try
{

foreach (string value in blockingCollection.GetConsumingEnumerable())
{
System.Diagnostics.Process.Start(Service1.strBatfile);
Log.getLogger("File Processed after executing batch:  Filename ->:" + value + " " + "Batch File Executed- > " + Service1.strBatfile + " at timestamp : " + DateTime.Now.ToString(), Service1.strlog);

}
}
catch (Exception)
{
throw;
}

});

}
catch (AggregateException ae)
{

foreach (var ex in ae.InnerExceptions)
{
CustomException.Write(CustomException.CreateExceptionString(ex, e.Name));
}
}
finally
{
m_Watcher.EnableRaisingEvents = true;
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post