Kaynağa Gözat

尝试修复关机时OLED出现乱码的问题

felix 1 yıl önce
ebeveyn
işleme
073cdbf709
1 değiştirilmiş dosya ile 31 ekleme ve 34 silme
  1. 31 34
      Vinno.FIS.Sonopost/App.xaml.cs

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

@@ -27,7 +27,6 @@ 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;
@@ -211,7 +210,7 @@ namespace Vinno.FIS.Sonopost
         {
             try
             {
-                Logger.WriteLineWarn("OnExit Invoke");
+                Logger.WriteLineWarn("Sonopost OnExit Invoke");
                 Dispose();
                 base.OnExit(e);
             }
@@ -227,42 +226,40 @@ namespace Vinno.FIS.Sonopost
 
         private void Dispose()
         {
-            lock (_lock)
+            if (_isDisposed)
             {
-                if (_isDisposed)
-                {
-                    return;
-                }
+                _manualResetEvent.WaitOne(3000);
+                return;
+            }
 
-                Logger.WriteLineWarn("Sonopost Dispose Invoke");
-                try
+            Logger.WriteLineWarn("Sonopost Dispose Invoke");
+            try
+            {
+                _isDisposed = true;
+                Task.Run(() =>
                 {
-                    _isDisposed = true;
-                    Task.Run(() =>
+                    try
                     {
-                        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}");
-                }
+                        _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}");
             }
         }