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);
        }
Exemple #2
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);
        }