2017-12-13 6 views
0

私のプロジェクトはWPFアプリケーションです。キャッシュクラスオブジェクト

複数のプロパティ(string,int,List<>)を持つ例えばProductsのクラスがあります。私はこのオブジェクトを(ファイルではなく)メモリにキャッシュし、それを使用しようとしています。 また、キャッシュオブジェクトがHostFileChangeMonitorと同様に更新されたときに発生するイベントを探します。

私は上記の解決策を探している理由は: 現在のオブジェクトを第三者dll(タイマー5秒)に送ってGUIの性能を損なう重いオブジェクトです。 したがって、クラスオブジェクトをキャッシュすることによって、キャッシュオブジェクトが更新されるときにのみ、この重い操作を呼び出すよう監視します。

オブジェクトプロパティの値をtxtファイルに保存し、イベントをトリガーするのにHostFileChangeMonitorを使用すると考えましたが、もう1つのIO操作が追加されます。

入力があれば教えてください。

答えて

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) 
     } 
    }