【问题标题】:Cache class objects缓存类对象
【发布时间】:2018-05-27 05:53:30
【问题描述】:

我的项目是 WPF 应用程序。

我有一个类,例如 Products 具有多个属性(stringintList<>)。我希望将此对象缓存在内存中(而不是在文件中),并使用它。 还寻找缓存对象更新时引发的事件,类似于HostFileChangeMonitor

我寻找上述解决方案的原因是: 我必须将当前对象发送到第三方 dll(在 5 秒的计时器上),它是阻碍 GUI 性能的重物。 因此,通过缓存类对象,我将监控仅在更新缓存对象时调用这个繁重的操作。

我已经想过将对象属性值保存到 txt 文件并使用HostFileChangeMonitor 来触发事件,但这会增加一个 IO 操作。

如果有任何意见请分享?

【问题讨论】:

    标签: c# wpf performance caching


    【解决方案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)
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-17
      • 2012-06-06
      • 2012-10-14
      • 1970-01-01
      • 2015-09-03
      • 2012-08-04
      • 1970-01-01
      相关资源
      最近更新 更多