Procházet zdrojové kódy

Added exception handler for DigitalFOrmDocumentFactory so that it doesn't just stop if a problem happens

Kenric Nugteren před 1 měsícem
rodič
revize
bdc0bca184

+ 28 - 21
InABox.Core/DigitalForms/DigitalFormDocumentFactory.cs

@@ -92,30 +92,37 @@ namespace InABox.Core
                     bool? previouslyActive = null;
                     while (_cancel?.IsCancellationRequested != true)
                     {
-                        var file = Directory.EnumerateFiles(CachePath, "*.formdocument")
-                            .FirstOrDefault();
-
-                        var isActive = !String.IsNullOrWhiteSpace(file);
-                        if (isActive != previouslyActive)
+                        try
                         {
-                            previouslyActive = isActive;
-                            _status?.Invoke(isActive);
-                        }
+                            var file = Directory.EnumerateFiles(CachePath, "*.formdocument")
+                                .FirstOrDefault();
 
-                        if (!String.IsNullOrWhiteSpace(file) && File.Exists(file) && IsConnected)
-                        {
-                            var data = File.ReadAllBytes(file);
-                            var document = new Document()
+                            var isActive = !String.IsNullOrWhiteSpace(file);
+                            if (isActive != previouslyActive)
                             {
-                                FileName = Path.GetFileName(file),
-                                Data = data,
-                                CRC = CoreUtils.CalculateCRC(data),
-                                TimeStamp = DateTime.Now,
-                                Created = DateTime.Now,
-                                CreatedBy = ClientFactory.UserID
-                            };
-                            new Client<Document>().Save(document, "Uploaded from Mobile Device");
-                            File.Delete(file);
+                                previouslyActive = isActive;
+                                _status?.Invoke(isActive);
+                            }
+
+                            if (!String.IsNullOrWhiteSpace(file) && File.Exists(file) && IsConnected)
+                            {
+                                var data = File.ReadAllBytes(file);
+                                var document = new Document()
+                                {
+                                    FileName = Path.GetFileName(file),
+                                    Data = data,
+                                    CRC = CoreUtils.CalculateCRC(data),
+                                    TimeStamp = DateTime.Now,
+                                    Created = DateTime.Now,
+                                    CreatedBy = ClientFactory.UserID
+                                };
+                                new Client<Document>().Save(document, "Uploaded from Mobile Device");
+                                File.Delete(file);
+                            }
+                        }
+                        catch(Exception e)
+                        {
+                            CoreUtils.LogException("", e);
                         }
 
                         Thread.Sleep(1000);