public CodeWatcher(CodeRunnerParameters parameters) { _parameters = parameters; _workQueue = new BlockingCollection <string>(); if (_parameters.ForceInitialRun) { ForceInitialRun(); } _debouncerWithProjection = new DebouncerWithProjection <FileSystemEventArgs, string>( actionToDebounce: evt => { Console.WriteLine($"INFO: {Path.GetFileName(evt.FullPath)} changed detected !", Color.SaddleBrown); _workQueue.Add(evt.FullPath); }, debounceBy: evt => evt.FullPath, delay: 100.Milliseconds()); _fsw = new FileSystemWatcher { Path = _parameters.Directory, IncludeSubdirectories = true, Filter = "*.cs", NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.Security, EnableRaisingEvents = true, }; _fsw.Changed += OnSourceFileChanged; Console.WriteLine($"INFO: Running and watching for change in {_parameters.Directory}", Color.SaddleBrown); StartConsumingTask(); }
public CodeRunner(string sourceCodeFile, IEnumerable <string> inputFiles, CodeRunnerParameters parameters) { _sourceCodeFile = sourceCodeFile; _inputFiles = inputFiles; _parameters = parameters; _styleSheet = new StyleSheet(Color.White); _styleSheet.AddStyle("OK", Color.Green); _styleSheet.AddStyle("KO", Color.Red); }