我的项目是WPF应用程序。
我有一个类,例如Products
有多个属性(string
,int
,List<>
)。我希望将此对象缓存在内存中(而不是在文件中),并使用它。
还要查找缓存对象与HostFileChangeMonitor
类似的更新时引发的事件。
我正在寻找上述解决方案的原因是: 我必须将当前对象发送到第三方dll(在5秒的计时器上)并且它是妨碍GUI性能的重物。 因此,通过缓存类对象,我将监视只在缓存对象更新时调用此重操作。
我已经考虑将对象属性值保存到txt文件并使用HostFileChangeMonitor
来触发事件,但这将再添加一次IO操作。
请分享是否有任何意见?
答案 0 :(得分:1)
感谢大家查看我的问题。最后,我得到了具有特定时间内存缓存的代码。 发布它可能对像我这样的人有用。用一个例子来解释。
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)
}
}