A: 新增ExceptionExpand异常处理类及相关枚举 (Infrastructure/ExceptionExpand.cs)
A: 新增全局Process缓存类 (Infrastructure/GlobalCaches/ProcessCache.cs) A: 新增WinDivert封装和PacketSniffer数据包捕获功能 (WinDivertNet/WinDivertWrapper) A: 新增Todo文档 (ClientApp/doc/Todo.md) U: 配置生成路由显示 (ClientApp/src/constants/app.ts) U: WebPanel新增数据包捕获触发逻辑 (Shell/Views/WebPanel.xaml.cs) U: 配置Shell项目加载WinDivert相关文件 (Shell/Shell.csproj)
This commit is contained in:
1 parent
078e59ae6b
commit
ad2514e044
21 files changed
+1560
-71
No files matched your search
@@ -0,0 +1,58 @@
|
||||
using System.Diagnostics;
|
||||
using Infrastructure.Models;
|
||||
|
||||
namespace Infrastructure.GlobalCaches;
|
||||
|
||||
/// <summary>
|
||||
/// 进程信息缓存
|
||||
/// </summary>
|
||||
public sealed class ProcessCache
|
||||
{
|
||||
private static readonly Lazy<ProcessCache> _instance = new Lazy<ProcessCache>(() => new ProcessCache());
|
||||
|
||||
public static ProcessCache Instance => _instance.Value;
|
||||
|
||||
public record ProcessCacheKey(int Pid, DateTime StartTime);
|
||||
|
||||
public ProcessCacheKey GetProcessKey(int pid)
|
||||
{
|
||||
var process = Process.GetProcessById(pid);
|
||||
return new ProcessCacheKey(pid, process.StartTime);
|
||||
}
|
||||
|
||||
// 私有构造函数,禁止外部创建实例
|
||||
private ProcessCache()
|
||||
{
|
||||
// 初始化缓存等操作
|
||||
}
|
||||
|
||||
// 示例缓存字段
|
||||
private readonly Dictionary<ProcessCacheKey, ProgramInfo> _cache = new Dictionary<ProcessCacheKey, ProgramInfo>();
|
||||
|
||||
// 设置缓存
|
||||
public void Set(ProcessCacheKey key, ProgramInfo value)
|
||||
{
|
||||
lock (_cache)
|
||||
{
|
||||
_cache[key] = value;
|
||||
}
|
||||
}
|
||||
|
||||
// 获取缓存
|
||||
public ProgramInfo? Get(ProcessCacheKey key)
|
||||
{
|
||||
lock (_cache)
|
||||
{
|
||||
return _cache.GetValueOrDefault(key);
|
||||
}
|
||||
}
|
||||
|
||||
// 移除缓存
|
||||
public void Remove(ProcessCacheKey key)
|
||||
{
|
||||
lock (_cache)
|
||||
{
|
||||
_cache.Remove(key);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user