From e3868d4d61ded0e76fc8fe3fdacdd9e6d9113cf1 Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期一, 13 十月 2025 08:50:15 +0800
Subject: [PATCH] 优化HMI;

---
 HMI.LogViewer/LogViewer.xaml.cs |   87 ++++++++++++++++++++++++++++++-------------
 1 files changed, 60 insertions(+), 27 deletions(-)

diff --git a/HMI.LogViewer/LogViewer.xaml.cs b/HMI.LogViewer/LogViewer.xaml.cs
index da25941..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,6 +33,26 @@
 
         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()
         {
@@ -39,7 +60,7 @@
             autoRfhTimer = new Timer
             {
                 Enabled = false,
-                Interval = 1000,
+                Interval = 1500,
                 AutoReset = false
             };
             autoRfhTimer.Elapsed += AutoRfhTimer_Elapsed;
@@ -151,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;
         }
 
@@ -174,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;
             }
@@ -223,28 +248,36 @@
         /// </summary>
         private void Refresh100items()
         {
-            try
+            autoRfhTimer.Enabled = false;
+            Task.Run(() =>
             {
-                autoRfhTimer.Enabled = false;
-                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";
-                SqliteHelper sql = new SqliteHelper(todayLogFile);
-                var dt = sql.GetDataTable(str);
-                this.Dispatcher.BeginInvoke((Action)delegate ()
+                try
                 {
-                    table.ItemsSource = dt.DefaultView;
-                });
-            }
-            catch (Exception ex)
-            {
-                log.Error("Log Auto Refresh Failed.", ex);
-                this.Error($"鑷姩鍒锋柊澶辫触锛亄ex.Message}");
-            }
-            finally
-            {
-                autoRfhTimer.Enabled = AutoRfh;
-            }
+                    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