using System.Diagnostics;
using Infrastructure.Models;
namespace Infrastructure.GlobalCaches;
///
/// 进程信息缓存
///
public sealed class ProcessCache
{
private static readonly Lazy _instance = new Lazy(() => 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 _cache = new Dictionary();
// 设置缓存
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);
}
}
}