From 3a471ae651b228231bebb3a2d438baa1d4ac0261 Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期五, 21 十一月 2025 08:57:52 +0800
Subject: [PATCH] 优化

---
 HMI.LogViewer/LogViewer.xaml.cs |   96 ++++++++++++++++++++++++++++++++++--------------
 1 files changed, 68 insertions(+), 28 deletions(-)

diff --git a/HMI.LogViewer/LogViewer.xaml.cs b/HMI.LogViewer/LogViewer.xaml.cs
index 508aecf..4b9699a 100644
--- a/HMI.LogViewer/LogViewer.xaml.cs
+++ b/HMI.LogViewer/LogViewer.xaml.cs
@@ -6,6 +6,7 @@
 using System.Data;
 using System.IO;
 using System.Linq;
+using System.Threading.Tasks;
 using System.Timers;
 using System.Windows;
 using System.Windows.Controls;
@@ -32,10 +33,37 @@
 
         private Timer autoRfhTimer;
 
+        private int currentPage = 1;
+        public int CurrentPage
+        {
+            get => currentPage;
+            set
+            {
+                Set(ref currentPage, value);
+            }
+        }
+
+        private int maxPage = 0;
+        public int MaxPage
+        {
+            get => maxPage;
+            set
+            {
+                Set(ref currentPage, value);
+            }
+        }
+
 
         public LogViewer()
         {
             DataContext = this;
+            autoRfhTimer = new Timer
+            {
+                Enabled = false,
+                Interval = 1500,
+                AutoReset = false
+            };
+            autoRfhTimer.Elapsed += AutoRfhTimer_Elapsed;
             InitializeComponent();
         }
 
@@ -68,12 +96,6 @@
 
         private void UserControl_Loaded(object sender, RoutedEventArgs e)
         {
-            autoRfhTimer = new Timer
-            {
-                Enabled = false,
-                Interval = 1000
-            };
-            autoRfhTimer.Elapsed += AutoRfhTimer_Elapsed;
             Loaded -= UserControl_Loaded;
         }
 
@@ -150,11 +172,15 @@
                 endTimeInput.SelectedDateTime });
             foreach (string file in files)
             {
-                SqliteHelper sql = new SqliteHelper(file);
-                dt.Merge(sql.GetDataTable(str));
-                sql.Close();
+                using (SqliteHelper sql = new SqliteHelper(file))
+                {
+                    dt.Merge(sql.GetDataTable(str));
+                }
             }
-            dt.DefaultView.Sort = "time Desc";
+            if (dt.Rows.Count > 0)
+            {
+                dt.DefaultView.Sort = "time Desc";
+            }
             table.ItemsSource = dt.DefaultView;
         }
 
@@ -173,9 +199,9 @@
                     var lastWriteTime = File.GetLastWriteTime(file);
                     bool flag = true;
                     if (range[0] != null) flag &= lastWriteTime >= range[0];
-                    if (range[1] != null) flag &= lastWriteTime <= range[1];
+                    //if (range[1] != null) flag &= lastWriteTime <= range[1];
                     return flag;
-                }).ToArray();
+                }).OrderByDescending(f => f).ToArray();
 
                 return oldFiles;
             }
@@ -222,22 +248,36 @@
         /// </summary>
         private void Refresh100items()
         {
-            //try
-            //{
-            //    if (!File.Exists(todayLogFile)) return;
-            //    string str = "select type,time,source,text from log order by time desc limit 100";
-            //    SqliteHelper sql = new SqliteHelper(todayLogFile);
-            //    var dt = sql.GetDataTable(str);
-            //    this.Dispatcher.BeginInvoke((Action)delegate ()
-            //    {
-            //        table.ItemsSource = dt.DefaultView;
-            //    });
-            //}
-            //catch (Exception ex)
-            //{
-            //    log.Error("Log Auto Refresh Failed.", ex);
-            //    this.Error($"鑷姩鍒锋柊澶辫触锛亄ex.Message}");
-            //}
+            autoRfhTimer.Enabled = false;
+            Task.Run(() =>
+            {
+                try
+                {
+                    string todayLogFile = Path.Combine(PathHelper.LogViewerDir, $"log_{DateTime.Today:yyyy-MM-dd}.db");
+                    if (!File.Exists(todayLogFile)) return;
+                    string str = "select level,time,source,text from log order by time desc limit 100";
+                    using (SqliteHelper sql = new SqliteHelper(todayLogFile))
+                    {
+                        var dt = sql.GetDataTable(str);
+                        this.Dispatcher.BeginInvoke((Action)delegate ()
+                        {
+                            table.ItemsSource = dt.DefaultView;
+                        });
+                    }
+                }
+                catch (Exception ex)
+                {
+                    log.Error("Log Auto Refresh Failed.", ex);
+                    this.Error($"鑷姩鍒锋柊澶辫触锛亄ex.Message}");
+                }
+                finally
+                {
+                    this.Dispatcher.BeginInvoke((Action)delegate ()
+                    {
+                        autoRfhTimer.Enabled = AutoRfh;
+                    });
+                }
+            });
         }
     }
 }

--
Gitblit v1.9.1