protected override void OnStart(string[] args) { string currentPath; if (args.Length > 0) { currentPath = args[0]; } else { currentPath = Path.GetDirectoryName(Environment.GetCommandLineArgs()[0]); } LogMessages.LogFilePath = Path.Combine(currentPath, "LogMessages.txt"); LogMessages.Log("Служба запущена."); MessageShowMethod.ShowMethod = LogMessages.Log; Settings = new GetSettings(currentPath); Settings.ReadSettingsFile(); if (Settings.IsActual) { LogMessages.Log("Интервал всего цикла в настройках: " + Settings.IntervalAllCile); MainTimer = new Timer(StartCopy, null, 0, Settings.IntervalAllCile * 1000); } else { LogMessages.Log("Настройки не приняты - запущена остановка службы."); this.Stop(); } }
private void StartCopy(object obj) { LogMessages.Log("Цикл запущен."); int settingsCount = Settings.Settings.Count; LogMessages.Log("Всего " + settingsCount + " настроек"); foreach (Settings set in Settings.Settings) { Thread currentThread = new Thread(new ParameterizedThreadStart(CopingFilesToBuffer)); CopyThread.Add(currentThread); currentThread.Start(set); LogMessages.Log("поток " + set.ServiceName + " запущен."); } Thread.Sleep(Settings.WorkingCycle * 1000); LogMessages.Log("Цикл завершен."); StopCopy(); }
protected override void OnStop() { try { LogMessages.Log("Остановка службы запущена."); StopCopy(); if (MainTimer != null) { MainTimer.Dispose(); } LogMessages.Log("Служба остановлена."); } catch (Exception ex) { LogMessages.Log("Ошибка при выполнении остановки службы."); } }
private void CopingFilesToBuffer(object obj) { Settings set = obj as Settings; LogMessages.Log("Копирование запущенно."); DateToXml dtx = new DateToXml(set.LastCopyDateTimeFilePath); DateTime lastCopyDateTime = dtx.GetDataFromFile(); NewFilesSearch newFilesSearch = new NewFilesSearch(); List <FilePathDate> newFiles = newFilesSearch.GetFilesFromFolder(set.SourcePath, lastCopyDateTime); MoveFilesList moveFilesList = new MoveFilesList(set, newFiles); MflDtx.Add(new ThreadsPack(moveFilesList, dtx)); moveFilesList.MoveFiles(); LogMessages.Log("Копирование файлов выполнено."); }
private void StopCopy() { LogMessages.Log("Остановка цикла запущена."); foreach (var thread in CopyThread) { if (thread.IsAlive) { thread.Abort(); } } CopyThread.Clear(); MflDtx.ForEach(x => { DateTime newDateTimeCopy = x.MoveFiles.StopMoveFiles(); x.DateXml.SetDateToFile(newDateTimeCopy); }); MflDtx.Clear(); LogMessages.Log("Остановка завершена."); }