alielie
2025-11-21 3a471ae651b228231bebb3a2d438baa1d4ac0261
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;
                    });
                }
            });
        }
    }
}