From d0ded5cd9bf5070a120bad58b5be21fe2ac6a4ff Mon Sep 17 00:00:00 2001
From: C3032 <C3032@BC3032>
Date: 星期六, 20 十二月 2025 16:41:09 +0800
Subject: [PATCH] test

---
 IDViewer_2D/ImageService/ImageCleanupService.cs |   94 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 94 insertions(+), 0 deletions(-)

diff --git a/IDViewer_2D/ImageService/ImageCleanupService.cs b/IDViewer_2D/ImageService/ImageCleanupService.cs
new file mode 100644
index 0000000..1a62b54
--- /dev/null
+++ b/IDViewer_2D/ImageService/ImageCleanupService.cs
@@ -0,0 +1,94 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace SmartScanner
+{
+    class ImageCleanupService
+    {
+        private readonly string _imageDirectory;
+        private readonly int _retentionDays;
+        private Timer _cleanupTimer;
+        private bool _isRunning;
+
+        public ImageCleanupService(string imageDirectory, int retentionDays)
+        {
+            _imageDirectory = imageDirectory;
+            _retentionDays = retentionDays;
+        }
+
+        public void Start()
+        {
+            if (_isRunning) return;
+
+            // 绔嬪嵆鎵ц涓�娆℃竻鐞�
+            Task.Run(() => CleanupOldImages());
+
+            // 璁剧疆姣忓ぉ鍑屾櫒2鐐规墽琛屾竻鐞�
+            var now = DateTime.Now;
+            var nextRunTime = new DateTime(now.Year, now.Month, now.Day, 2, 0, 0).AddDays(1);
+            var dueTime = nextRunTime - now;
+
+            _cleanupTimer = new Timer(_ => CleanupOldImages(), null, dueTime, TimeSpan.FromDays(1));
+            _isRunning = true;
+        }
+
+        public void Stop()
+        {
+            _cleanupTimer?.Dispose();
+            _isRunning = false;
+        }
+
+        private void CleanupOldImages()
+        {
+            try
+            {
+                if (!Directory.Exists(_imageDirectory)) return;
+
+                var cutoffDate = DateTime.Now.AddDays(-_retentionDays);
+                var searchOption = SearchOption.AllDirectories;
+
+                foreach (var file in Directory.EnumerateFiles(_imageDirectory, "*.*", searchOption))
+                {
+                    try
+                    {
+                        var fileInfo = new FileInfo(file);
+                        if (fileInfo.LastWriteTime < cutoffDate)
+                        {
+                            File.Delete(file);
+                            // 鍙�夛細璁板綍鍒犻櫎鏃ュ織
+                            LogDeletion(file);
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        // 璁板綍閿欒浣嗙户缁鐞嗗叾浠栨枃浠�
+                        LogError($"鍒犻櫎鏂囦欢澶辫触: {file}", ex);
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                LogError("娓呯悊鏃у浘鍍忔椂鍙戠敓閿欒", ex);
+            }
+        }
+
+        private void LogDeletion(string filePath)
+        {
+            // 瀹炵幇鏃ュ織璁板綍锛屽彲浠ュ啓鍏ユ枃浠舵垨鏁版嵁搴�
+            string logMessage = $"{DateTime.Now}: 宸插垹闄よ繃鏈熷浘鍍� - {filePath}";
+            System.Diagnostics.Debug.WriteLine(logMessage);
+        }
+
+        private void LogError(string message, Exception ex)
+        {
+            // 瀹炵幇閿欒鏃ュ織璁板綍
+            string errorMessage = $"{DateTime.Now}: {message} - {ex.Message}";
+            System.Diagnostics.Debug.WriteLine(errorMessage);
+        }
+    }
+}

--
Gitblit v1.9.3