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