瀏覽代碼

尝试修复魔盒关机时,OLED屏偶尔出现乱码的问题

felix 1 年之前
父節點
當前提交
56006fdeb5

+ 2 - 8
FISSDK/FISIMPL/FISIMPL.cs

@@ -4,7 +4,6 @@ using FISLib.Connect;
 using FISLib.Consultation;
 using FISLib.Hardware;
 using FISLib.LiveVideo;
-using FISLib.Log;
 using FISLib.Notification;
 using FISLib.Remedical;
 using FISLib.Teaching;
@@ -77,14 +76,9 @@ namespace FISIMPL
             }
         }
 
-        public static void InitLogEngine(LogEngine logEngine)
+        public static void InitLogEngine()
         {
-            if (_logEngine == null)
-            {
-                _logEngine = logEngine;
-                Logger.RegisterEngine(_logEngine);
-                CrossPlatformHelper.Instance.LogWriter = new LogWriter();
-            }
+            CrossPlatformHelper.Instance.LogWriter = new LogWriter();
         }
 
         /// <summary>

+ 34 - 32
Vinno.FIS.Sonopost/App.xaml.cs

@@ -27,6 +27,7 @@ namespace Vinno.FIS.Sonopost
     {
         private readonly LogEngine _logEngine = new SonopostLogEngine();
         private readonly ManualResetEvent _manualResetEvent = new ManualResetEvent(false);
+        private readonly object _lock = new object();
 
         private WebHost _webHost;
         private INetworkManager _networkManager;
@@ -46,7 +47,7 @@ namespace Vinno.FIS.Sonopost
                 SonopostConstants.DataFolder = path;
                 Logger.RegisterEngine(_logEngine);
                 Logger.WriteLineWarn("=======================Sonopost BootUp=======================");
-                FISIMPL.FISIMPL.InitLogEngine(_logEngine);
+                FISIMPL.FISIMPL.InitLogEngine();
                 var version = Assembly.GetExecutingAssembly().GetName().Version.ToString();
                 Logger.WriteLineInfo($"Current Version:{version}");
                 AppDomain.CurrentDomain.UnhandledException += CurrentDomainUnhandledException;
@@ -194,10 +195,7 @@ namespace Vinno.FIS.Sonopost
             try
             {
                 Logger.WriteLineWarn($"Sonopost OnSessionEnded Invoke");
-                _oledManager?.ShowStatus(OledMessage.ShutDown);
                 Dispose();
-                Thread.Sleep(1000);
-                Logger.WriteLineWarn("=======================Sonopost Shutdown=======================");
             }
             catch (Exception ex)
             {
@@ -214,7 +212,6 @@ namespace Vinno.FIS.Sonopost
             try
             {
                 Logger.WriteLineWarn("OnExit Invoke");
-                _oledManager?.ShowStatus(OledMessage.ShutDown);
                 Dispose();
                 base.OnExit(e);
             }
@@ -224,43 +221,48 @@ namespace Vinno.FIS.Sonopost
             }
             finally
             {
-                Logger.WriteLineWarn("=======================Sonopost Shutdown=======================");
                 Process.GetCurrentProcess().Kill();
             }
         }
 
         private void Dispose()
         {
-            if (_isDisposed)
+            lock (_lock)
             {
-                return;
-            }
+                if (_isDisposed)
+                {
+                    return;
+                }
 
-            Logger.WriteLineWarn("Sonopost Dispose Invoke");
-            try
-            {
-                _isDisposed = true;
-                Task.Run(() =>
+                Logger.WriteLineWarn("Sonopost Dispose Invoke");
+                try
                 {
-                    try
-                    {
-                        _networkManager.CurrentNetworkChanged -= OnCurrentNetworkChanged;
-                        _networkManager.CurrentWifiLevelChanged -= OnCurrentWifiLevelChanged;
-                        AppDomain.CurrentDomain.UnhandledException -= CurrentDomainUnhandledException;
-                        SystemEvents.SessionEnded -= OnSessionEnded;
-                        DisposeWebHost();
-                        AppManager.Instance.DisposeAllManagers();
-                    }
-                    catch (Exception ex)
+                    _isDisposed = true;
+                    Task.Run(() =>
                     {
-                        Logger.WriteLineError($"Sonopost Dispose Error:{ex}");
-                    }
-                });
-                _manualResetEvent.WaitOne(3000);
-            }
-            catch (Exception ex)
-            {
-                Logger.WriteLineError($"Sonopost Dispose Error:{ex}");
+                        try
+                        {
+                            _oledManager?.ShowStatus(OledMessage.ShutDown);
+                            Thread.Sleep(50);
+                            _networkManager.CurrentNetworkChanged -= OnCurrentNetworkChanged;
+                            _networkManager.CurrentWifiLevelChanged -= OnCurrentWifiLevelChanged;
+                            AppDomain.CurrentDomain.UnhandledException -= CurrentDomainUnhandledException;
+                            SystemEvents.SessionEnded -= OnSessionEnded;
+                            DisposeWebHost();
+                            AppManager.Instance.DisposeAllManagers();
+                        }
+                        catch (Exception ex)
+                        {
+                            Logger.WriteLineError($"Sonopost Dispose Error:{ex}");
+                        }
+                    });
+                    _manualResetEvent.WaitOne(3000);
+                    Logger.WriteLineWarn("=======================Sonopost Shutdown=======================");
+                }
+                catch (Exception ex)
+                {
+                    Logger.WriteLineError($"Sonopost Dispose Error:{ex}");
+                }
             }
         }
 

+ 2 - 2
Vinno.FIS.Sonopost/Features/Oled/OledMessages.cs

@@ -39,11 +39,11 @@ namespace Vinno.FIS.Sonopost.Features.Oled
             ChineseMessageDictionary.Add(OledMessage.Offline, "云服务已离线");
             ChineseMessageDictionary.Add(OledMessage.LoginFail, "云服务连接失败");
             ChineseMessageDictionary.Add(OledMessage.Reconnecting, "重新连接云服务");
-            ChineseMessageDictionary.Add(OledMessage.Restore, "系统正在还原");
+            ChineseMessageDictionary.Add(OledMessage.Restore, "系统正在还原");
             ChineseMessageDictionary.Add(OledMessage.ShutDown, "正在关机");
             ChineseMessageDictionary.Add(OledMessage.Upgrading, "正在更新固件");
             ChineseMessageDictionary.Add(OledMessage.Error, "设备出错");
-            ChineseMessageDictionary.Add(OledMessage.Reboot, "正在重启");
+            ChineseMessageDictionary.Add(OledMessage.Reboot, "正在重启");
             ChineseMessageDictionary.Add(OledMessage.BeginLog, "正在获取日志");
             ChineseMessageDictionary.Add(OledMessage.ChangeNetwork, "正在修改网络");
 

+ 0 - 4
Vinno.FIS.Sonopost/Managers/LoginManager.cs

@@ -18,10 +18,8 @@ namespace Vinno.FIS.Sonopost.Managers
         private UltrasoundMachineInfo _ultrasoundMachineInfo;
         private readonly IConfigManager _configManager;
         private readonly IConnectionService _connectionService;
-        private IVersionCheckManager _versionCheckManager;
         private ILiveVideoManager _liveVideoManager;
         private IOledManager _oledManager;
-        private IRemedicalManager _remedicalManager;
         private IKeyBoardListenManager _keyBoardListenManager;
 
         public bool IsLoginWithAccountAndPassword { get; private set; }
@@ -50,10 +48,8 @@ namespace Vinno.FIS.Sonopost.Managers
         public void Init()
         {
             _liveVideoManager = AppManager.Instance.GetManager<ILiveVideoManager>();
-            _versionCheckManager = AppManager.Instance.GetManager<IVersionCheckManager>();
             _oledManager = AppManager.Instance.GetManager<IOledManager>();
             _keyBoardListenManager = AppManager.Instance.GetManager<IKeyBoardListenManager>();
-            _remedicalManager = AppManager.Instance.GetManager<IRemedicalManager>();
         }
 
         private void OnFISDeviceStatusChanged(object sender, FISDeviceStatusInfo e)

+ 0 - 3
Vinno.FIS.Sonopost/Managers/VersionCheckManager.cs

@@ -21,16 +21,13 @@ namespace Vinno.FIS.Sonopost.Managers
         private string _packagePath;
         private string _packageName = "Sonopost_Windows_UpgradePackage.zip";
         private string _packageFullPath;
-        private IConfigManager _configManager;
         private int _autoUpdateTime;
         private bool _needAutoUpdate;
         private bool _inited;
-        private DeviceStatus _deviceStatus;
         private Timer _timer;
 
         public VersionCheckManager()
         {
-            _configManager = AppManager.Instance.GetManager<IConfigManager>();
             _needAutoUpdate = SonopostSystemSettings.Instance.UpdateSetting.NeedAutoUpdate;
             _autoUpdateTime = SonopostSystemSettings.Instance.UpdateSetting.AutoUpdateTime;
             _fisUpgraderService = AppManager.Instance.GetManager<IFISManager>().FISUpgraderService;