C# 缓存类对象
我的项目是WPF应用程序 我有一个类,例如具有多个属性的C# 缓存类对象,c#,wpf,performance,caching,C#,Wpf,Performance,Caching,我的项目是WPF应用程序 我有一个类,例如具有多个属性的Products(string,int,List)。我希望将这个对象缓存在内存中(而不是文件中),并使用它。 还查找缓存对象更新时引发的事件,类似于HostFileChangeMonitor 我寻求上述解决方案的原因是: 我必须将当前对象发送到第三方dll(计时器为5秒),这是一个沉重的对象,阻碍了GUI的性能。 因此,通过缓存类对象,我将监视仅在缓存对象更新时调用此重载操作 我已经想到将对象属性值保存到txt文件,并使用HostFileC
Products
(string
,int
,List
)。我希望将这个对象缓存在内存中(而不是文件中),并使用它。
还查找缓存对象更新时引发的事件,类似于HostFileChangeMonitor
我寻求上述解决方案的原因是:
我必须将当前对象发送到第三方dll(计时器为5秒),这是一个沉重的对象,阻碍了GUI的性能。
因此,通过缓存类对象,我将监视仅在缓存对象更新时调用此重载操作
我已经想到将对象属性值保存到txt文件,并使用HostFileChangeMonitor
触发事件,但这将添加一个额外的IO操作
如果您有任何意见,请与我们分享?谢谢大家查看我的问题。最后,我得到了使用特定于时间的内存缓存的工作代码。 张贴它可能对像我这样的人有用。并举例说明
private MemoryCache mc = new MemoryCache("CacheProvider"); // Creating memory cache object.
public MainWindow()
{
InitializeComponent();
}
// Method to get cache elements.
private void GetCache_Click(object sender, RoutedEventArgs e)
{
lstEmployeeID.Items.Clear();
lstEmployeeName.Items.Clear();
var emp = new Employee();
foreach (Employee emp1 in emp.GetEmployeeList())
{
var cacheObj = mc[emp1.EmployeeName] as Employee; // typecasting it class object.
if (cacheObj != null)
{
lstEmployeeID.Items.Add(cacheObj.EmployeeId);
lstEmployeeName.Items.Add(cacheObj.EmployeeName);
}
}
}
// Saving class object to cache.
private void SaveCache_Click(object sender, RoutedEventArgs e)
{
var emp = new Employee();
var policy = new CacheItemPolicy();
policy.AbsoluteExpiration = DateTimeOffset.Now.AddSeconds(10.0);
foreach (Employee emp1 in emp.GetEmployeeList())
{
mc.Add(emp1.EmployeeName, emp1, policy); // adding (key, objectItem, CachingPolicy)
}
}