private static void OnRecordChanged(object source, PollingFileSystemEventArgs e) { foreach (var change in e.Changes) { var path = Path.Combine(change.Directory, change.Name); if (change.ChangeType == WatcherChangeTypes.Created) { Logger.Info("Record.PollingFileSystemWatcher.OnCreated"); try { Thread.Sleep(1000); var recordId = WexflowEngine.SaveRecordFromFile(path, superAdminUsername); if (recordId != "-1") { Logger.Info($"Record inserted from file {path}. RecordId: {recordId}"); } else { Logger.Error($"An error occured while inserting a record from the file {path}."); } } catch (Exception ex) { Logger.ErrorFormat("Error while creating the record {0}", ex, path); } } } }
private static void OnChanged(object source, PollingFileSystemEventArgs e) { foreach (var change in e.Changes) { var path = Path.Combine(change.Directory, change.Name); switch (change.ChangeType) { case WatcherChangeTypes.Created: Logger.Info("PollingFileSystemWatcher.OnCreated"); try { var admin = WexflowEngine.GetUser(superAdminUsername); WexflowEngine.SaveWorkflowFromFile(admin.GetId(), Core.Db.UserProfile.SuperAdministrator, path, true); } catch (Exception ex) { Logger.ErrorFormat("Error while creating the workflow {0}", ex, path); } break; case WatcherChangeTypes.Changed: Logger.Info("PollingFileSystemWatcher.OnChanged"); try { var admin = WexflowEngine.GetUser(superAdminUsername); WexflowEngine.SaveWorkflowFromFile(admin.GetId(), Core.Db.UserProfile.SuperAdministrator, path, true); } catch (Exception ex) { Logger.ErrorFormat("Error while updating the workflow {0}", ex, path); } break; case WatcherChangeTypes.Deleted: Logger.Info("PollingFileSystemWatcher.OnDeleted"); try { var removedWorkflow = WexflowEngine.Workflows.SingleOrDefault(wf => wf.FilePath == path); if (removedWorkflow != null) { WexflowEngine.DeleteWorkflow(removedWorkflow.DbId); } } catch (Exception ex) { Logger.ErrorFormat("Error while deleting the workflow {0}", ex, path); } break; } } }
private void OnChanged(object source, PollingFileSystemEventArgs e) { foreach (var change in e.Changes) { var path = Path.Combine(change.Directory, change.Name); if (ContinueDoTasksOnlyOnNotOpenFiles && change.FileLocked) { continue; } switch (change.ChangeType) { case WatcherChangeTypes.Created: Info("PollingFileSystemWatcher.OnCreated started."); try { ClearFiles(); Files.Add(new FileInf(path, Id)); var tasks = GetTasks(OnFileCreated); foreach (var task in tasks) { task.Logs.Clear(); task.Run(); CurrentLogs.AddRange(task.Logs); } Files.RemoveAll(f => f.Path == path); } catch (IOException ex) when((ex.HResult & 0x0000FFFF) == 32) { Logger.InfoFormat("There is a sharing violation for the file {0}.", path); } catch (Exception ex) { ErrorFormat("An error while triggering PollingFileSystemWatcher.OnCreated on the file {0}. Message: {1}", path, ex.Message); } Info("PollingFileSystemWatcher.OnCreated finished."); try { var entry = Workflow.Database.GetEntry(Workflow.Id, Workflow.InstanceId); entry.Logs = string.Join("\r\n", CurrentLogs); Workflow.Database.UpdateEntry(entry.GetDbId(), entry); } catch (Exception ex) { ErrorFormat("An error while updating PollingFileSystemWatcher.OnCreated database entry.", ex); } break; case WatcherChangeTypes.Changed: Info("PollingFileSystemWatcher.OnChanged started."); try { ClearFiles(); Files.Add(new FileInf(path, Id)); var tasks = GetTasks(OnFileChanged); foreach (var task in tasks) { task.Logs.Clear(); task.Run(); CurrentLogs.AddRange(task.Logs); } Files.RemoveAll(f => f.Path == path); } catch (IOException ex) when((ex.HResult & 0x0000FFFF) == 32) { Logger.InfoFormat("There is a sharing violation for the file {0}.", path); } catch (Exception ex) { ErrorFormat("An error while triggering PollingFileSystemWatcher.OnChanged on the file {0}. Message: {1}", path, ex.Message); } Info("PollingFileSystemWatcher.OnChanged finished."); try { var entry = Workflow.Database.GetEntry(Workflow.Id, Workflow.InstanceId); entry.Logs = string.Join("\r\n", CurrentLogs); Workflow.Database.UpdateEntry(entry.GetDbId(), entry); } catch (Exception ex) { ErrorFormat("An error while updating PollingFileSystemWatcher.OnChanged database entry.", ex); } break; case WatcherChangeTypes.Deleted: Info("PollingFileSystemWatcher.OnDeleted started."); try { ClearFiles(); Files.Add(new FileInf(path, Id)); var tasks = GetTasks(OnFileDeleted); foreach (var task in tasks) { task.Logs.Clear(); task.Run(); CurrentLogs.AddRange(task.Logs); } Files.RemoveAll(f => f.Path == path); } catch (IOException ex) when((ex.HResult & 0x0000FFFF) == 32) { Logger.InfoFormat("There is a sharing violation for the file {0}.", path); } catch (Exception ex) { ErrorFormat("An error while triggering PollingFileSystemWatcher.OnDeleted on the file {0}. Message: {1}", path, ex.Message); } Info("PollingFileSystemWatcher.OnDeleted finished."); try { var entry = Workflow.Database.GetEntry(Workflow.Id, Workflow.InstanceId); entry.Logs = string.Join("\r\n", CurrentLogs); Workflow.Database.UpdateEntry(entry.GetDbId(), entry); } catch (Exception ex) { ErrorFormat("An error while updating PollingFileSystemWatcher.OnDeleted database entry.", ex); } break; } } }
private static void FileSystemWatcher_Changed(object sender, PollingFileSystemEventArgs e) => Console.WriteLine($@"File changed: {string.Join(',', e.Changes.Select(x => $"{x.ChangeType}: {x.Name}"))}");