private void WorkProcess() { do { foreach (var fileName in _fileManager.GetInputFiles()) { if (_stopRequested.WaitOne(TimeSpan.Zero)) { return; } if (_fileManager.TryOpen(fileName, 3, 5000)) { try { if (_barcodeManager.IsBarcode(fileName)) { var sourceFiles = _fileManager.GetTempFiles(); var pdfName = Path.Combine(_fileManager.OutputPath, Guid.NewGuid().ToString() + ".pdf"); Debug.WriteLine(string.Format("Generating resulting PDF...", fileName)); _fileManager.Delete(fileName); _documentManager.GeneratePdf(pdfName, sourceFiles); _fileManager.ClearTemp(); } else { Debug.WriteLine(string.Format("Moving {0} to temp folder...", fileName)); _fileManager.MoveToTemp(fileName); } continue; } catch (Exception ex) { Debug.WriteLine("Exception has occured!"); Debug.WriteLine(ex.Message); } try { Debug.WriteLine(string.Format("Moving {0} to corrupted folder...", fileName)); _fileManager.MoveToCorrupted(fileName); } catch (Exception ex) { Debug.WriteLine("Exception has occured!"); Debug.WriteLine(ex.Message); } } } } while (WaitHandle.WaitAny(new WaitHandle[] { _stopRequested, _fileCreated }) != 0); }
private void WorkProcess() { int waitResult; do { foreach (var fileName in _fileManager.GetInputFiles()) { if (_stopRequested.WaitOne(TimeSpan.Zero)) { return; } if (_fileManager.TryOpen(fileName, 3, 5000)) { try { if (_barcodeManager.IsBarcode(fileName)) { _status.Value = ServiceStatuses.ProcessingPdf; PublishPdf(); _fileManager.ClearTemp(); _fileManager.Delete(fileName); } else { _status.Value = ServiceStatuses.ProcessingFile; Debug.WriteLine(string.Format("Moving {0} to temp folder...", fileName)); _fileManager.MoveToTemp(fileName); } continue; } catch (Exception ex) { Debug.WriteLine("Exception has occured!"); Debug.WriteLine(ex.Message); } try { Debug.WriteLine(string.Format("Moving {0} to corrupted folder...", fileName)); _fileManager.MoveToCorrupted(fileName); } catch (Exception ex) { Debug.WriteLine("Exception has occured!"); Debug.WriteLine(ex.Message); } } } _status.Value = ServiceStatuses.Waiting; waitResult = WaitHandle.WaitAny(new WaitHandle[] { _stopRequested, _fileCreated }, _waitInterval); if (waitResult == WaitHandle.WaitTimeout) { try { _status.Value = ServiceStatuses.ProcessingPdf; PublishPdf(); _fileManager.ClearTemp(); } catch (Exception ex) { Debug.WriteLine("Exception has occured!"); Debug.WriteLine(ex.Message); } } } while (waitResult != 0); }