Exemplo n.º 1
0
 /// <summary>
 /// Wire the event handlers
 /// </summary>
 protected void WireEventHandlers()
 {
     _server = new HttpServer(Logger ?? Log.Default);
     WireServerRequestHandler();
     WireResponderEventHandlers();
     MonitorDirectories.Each(directory =>
     {
         if (!Directory.Exists(directory))
         {
             Directory.CreateDirectory(directory);
         }
         DirectoryInfo directoryInfo = new DirectoryInfo(directory);
         FileSystemWatchers.Add(directoryInfo.OnChange(CreatedOrChangedHandler));
         FileSystemWatchers.Add(directoryInfo.OnCreated(CreatedOrChangedHandler));
         FileSystemWatchers.Add(directoryInfo.OnRenamed(RenamedHandler));
     });
 }
        private bool WatchFolder(string path, string pattern, SemaphoreSlim signal)
        {
            FileSystemWatcher watcher = new FileSystemWatcher();

            Directory.CreateDirectory(path);
            watcher.Path = path;
            // Watch for changes in LastAccess and LastWrite times, and
            // the renaming of files or directories.
            watcher.NotifyFilter = NotifyFilters.LastAccess
                                   | NotifyFilters.LastWrite
                                   | NotifyFilters.FileName
                                   | NotifyFilters.DirectoryName;

            // Only watch pattern files.
            watcher.Filter = pattern;

            // Add event handlers.
            //watcher.Changed += method;
            watcher.Created += (object source, FileSystemEventArgs e) =>
            {
                Console.WriteLine($"File: {e.FullPath} {e.ChangeType} {e.Name}");
                // Signal event to wake up and process if awaiting data
                try
                {
                    if (signal != null && signal.CurrentCount == 0)
                    {
                        signal.Release();
                    }
                }
                catch (Exception)
                {
                } //could be in the middle of being disposed and recreated
            };
            //watcher.Deleted += method;
            //watcher.Renamed += method;
            watcher.Error += (object source, ErrorEventArgs e) =>
            {
                // Specify what is done when a file is changed, created, or deleted.
                Console.WriteLine($"File: {e.GetType()} {e.ToString()} {e.GetException()}");
            };
            // Begin watching.
            watcher.EnableRaisingEvents = true;

            return(FileSystemWatchers.TryAdd(path, watcher));
        }