From b0a4c47dd74bc41c5df3bab6ddd8de7bcc6a52b0 Mon Sep 17 00:00:00 2001
From: patrick <patrick.xu@broconcentric.com>
Date: 星期五, 06 十二月 2019 18:35:42 +0800
Subject: [PATCH] 1. 重新整理项目,按照A034模式,将设备异步操作修改为类同步操作。使用任务队列来存储和分配任务。

---
 src/Bro.Device.Common/Base/DeviceBase.cs |   42 +++++++++++++++++++++++++++++++++++++++---
 1 files changed, 39 insertions(+), 3 deletions(-)

diff --git a/src/Bro.Device.Common/Base/DeviceBase.cs b/src/Bro.Device.Common/Base/DeviceBase.cs
index 11aa9cf..25b45fb 100644
--- a/src/Bro.Device.Common/Base/DeviceBase.cs
+++ b/src/Bro.Device.Common/Base/DeviceBase.cs
@@ -14,6 +14,7 @@
 //using BroCComn.PubSub;
 using static Bro.Common.Helper.EnumHelper;
 using System.ComponentModel;
+using System.IO;
 
 namespace Bro.Common.Base
 {
@@ -393,7 +394,7 @@
             {
                 string currentStateStr = CurrentStateToBe.GetEnumDescription();
                 string stateToBeStr = stateToBe.GetEnumDescription();
-                throw new ProcessException($"{InitialConfig.Name}璁惧鐨勫綋鍓嶇姸鎬佷负{currentStateStr}锛屾棤娉曞垏鎹㈣嚦{stateToBeStr}", null);
+                throw new ProcessException($"{InitialConfig.Name}璁惧鐨勫綋鍓嶇姸鎬佷负{currentStateStr}锛屾棤娉曞垏鎹㈣嚦{stateToBeStr}");
             }
 
             CurrentState = EnumHelper.DeviceState.TBD;
@@ -417,7 +418,7 @@
                     }
                     else
                     {
-                        throw new ProcessException($"{InitialConfig.Name}璁惧鎿嶄綔瓒呮椂", null);
+                        throw new ProcessException($"{InitialConfig.Name}璁惧鎿嶄綔瓒呮椂");
                     }
                 }
 
@@ -489,7 +490,7 @@
                         //this.CurrentState = EnumHelper.DeviceState.DSExcept;
                         //this.CurrentStateToBe = EnumHelper.DeviceState.DSExcept;
 
-                        throw new ProcessException($"璁惧{InitialConfig.Name}鐨剓CurrentStateToBe.GetEnumDescription()}鎿嶄綔閲嶅3娆″け璐�", ex);
+                        throw new ProcessException($"璁惧{InitialConfig.Name}鐨剓CurrentStateToBe.GetEnumDescription()}鎿嶄綔閲嶅3娆″け璐�", ExceptionLevel.Warning, ex);
                     }
                 }
             }
@@ -515,5 +516,40 @@
             CurrentUserId = obj;
         }
         #endregion
+
+        #region 鏃ュ織澶勭悊
+        object logObject = new object();
+        public virtual async void LogAsync(DateTime dt, string prefix, string msg)
+        {
+            await Task.Run(() =>
+            {
+                if (InitialConfig.IsEnableLog)
+                {
+                    OnLog?.Invoke(dt, this, prefix + "\t" + msg);
+
+                    if (string.IsNullOrWhiteSpace(InitialConfig.LogPath) || !Path.IsPathRooted(InitialConfig.LogPath))
+                    {
+                        return;
+                    }
+
+                    if (!Directory.Exists(InitialConfig.LogPath))
+                    {
+                        Directory.CreateDirectory(InitialConfig.LogPath);
+                    }
+
+                    string filePath = Path.Combine(InitialConfig.LogPath, $"Log_{Name}_{DateTime.Now.ToString("yyyyMMdd")}.txt");
+                    lock (logObject)
+                    {
+                        using (StreamWriter writer = new StreamWriter(filePath, true, Encoding.UTF8))
+                        {
+                            writer.WriteLine($"{DateTime.Now.ToString("HH:mm:ss.fff")}\t{prefix}\t{msg}");
+                            writer.Flush();
+                            writer.Close();
+                        }
+                    }
+                }
+            });
+        }
+        #endregion
     }
 }

--
Gitblit v1.8.0