From 4c547258a5d37035e1866a91c412e224ec5e6270 Mon Sep 17 00:00:00 2001
From: GeWuYou <95328647+GeWuYou@users.noreply.github.com>
Date: Thu, 12 Feb 2026 00:01:39 +0800
Subject: [PATCH] =?UTF-8?q?refactor(storage):=20=E4=BC=98=E5=8C=96?=
=?UTF-8?q?=E6=96=87=E4=BB=B6=E5=AD=98=E5=82=A8=E5=88=A0=E9=99=A4=E6=93=8D?=
=?UTF-8?q?=E4=BD=9C=E7=9A=84=E7=BA=BF=E7=A8=8B=E5=AE=89=E5=85=A8=E6=80=A7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 为Delete方法添加详细的参数注释说明
- 添加锁机制确保文件删除操作的线程安全
- 使用GetOrAdd方法管理路径对应的锁对象
- 实现DeleteAsync异步删除方法
- 优化代码结构提高可读性和维护性
---
GFramework.Game/storage/FileStorage.cs | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/GFramework.Game/storage/FileStorage.cs b/GFramework.Game/storage/FileStorage.cs
index 20dd397..5b983fb 100644
--- a/GFramework.Game/storage/FileStorage.cs
+++ b/GFramework.Game/storage/FileStorage.cs
@@ -89,21 +89,32 @@ public sealed class FileStorage : IFileStorage
///
/// 删除指定键的存储项
///
- /// 存储键
+ /// 存储键,用于标识要删除的存储项
public void Delete(string key)
{
+ // 将键转换为文件路径
var path = ToPath(key);
+
+ // 获取或创建与路径关联的锁对象,确保线程安全
var keyLock = _keyLocks.GetOrAdd(path, _ => new object());
+ // 使用锁确保同一时间只有一个线程操作该路径的文件
lock (keyLock)
{
+ // 如果文件存在,则删除该文件
if (File.Exists(path))
File.Delete(path);
}
}
+ ///
+ /// 异步删除指定键的存储项
+ ///
+ /// 存储键,用于标识要删除的存储项
+ /// 表示异步操作的任务
public Task DeleteAsync(string key)
{
+ // 在线程池中运行同步删除方法以实现异步操作
return Task.Run(() => Delete(key));
}