在 WPF 应用程序中缓存应用程序数据
创建缓存类的实例,即,将实例化新的 MemoryCache 对象。
指定缓存使用 HostFileChangeMonitor 对象来监视文本文件中的更改。
读取文本文件并将其内容缓存为缓存条目。
显示缓存的文本文件的内容
创建WPFDemo 程序WpfApp2如下,验证使用 MemoryCache 缓存数据及缓存过期情况。
<Window x:Class="WpfApp2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp2"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Button Width="100" Height="60" Content="Cache" Click="Button_Click"></Button>
<Button Content="Button" HorizontalAlignment="Left" Margin="117,145,0,0" VerticalAlignment="Top" Width="124" Height="74" Click="Button_Click_1"/>
</Grid>
</Window>
using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Caching;
using System.Threading;
using System.Windows; namespace WpfApp2
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
} private void Button_Click(object sender, RoutedEventArgs e)
{
ObjectCache cache = MemoryCache.Default;
string fileContents = cache["filecontents"] as string; if (fileContents == null)
{
CacheItemPolicy policy = new CacheItemPolicy();
policy.AbsoluteExpiration =
DateTimeOffset.Now.AddSeconds(1000.0); List<string> filePaths = new List<string>();
filePaths.Add(@"C:\Users\wr\Desktop\cacheText.txt"); policy.ChangeMonitors.Add(new
HostFileChangeMonitor(filePaths)); // Fetch the file contents.
fileContents = File.ReadAllText(@"C:\Users\wr\Desktop\cacheText.txt") + "\n" + DateTime.Now.ToString(); cache.Set("filecontents", fileContents, policy);
}
MessageBox.Show(fileContents);
} private void Button_Click_1(object sender, RoutedEventArgs e)
{
ObjectCache cache = MemoryCache.Default;
string fileContents = cache["filecontents"] as string;
cache.Set(cache.GetCacheItem("filecontents"), new CacheItemPolicy() { AbsoluteExpiration = DateTimeOffset.Now.AddSeconds(5.0) });
MessageBox.Show(cache["filecontents"].ToString());
Thread.Sleep(5000);
MessageBox.Show(cache["filecontents"] == null ? "缓存已清空" :cache["filecontents"].ToString());
}
}
}
在 WPF 应用程序中缓存应用程序数据的更多相关文章
- C#程序中从数据库取数据时需注意数据类型之间的对应,int16\int32\int64
private void btn2_Click(object sender, RoutedEventArgs e) { using (SqlConnection ...
- MO拆分计划行程序中写入PRODUCTIONORDERS表数据出现重复导致报错(BUG)20180502
错误提示:ORA-00001: 违反唯一约束条件 (ABPPMGR.C0248833319_6192)ORA-06512: 在 "STG.FP_MO_SPLIT", line 19 ...
- ABAP 在被访问的程序中获取访问程序的全局变量
前些日子接到过一个看起来比较普通的需求: 存在一个系统标准函数组FG01,内含函数模块FM00,FM01……等等.在系统程序中,FM00会调用FM01,通过FM01获取获取某些数据. 需求要求,复制一 ...
- 在 Java 应用程序中绑定 Bean 和数据
本指南介绍了 NetBeans IDE 对 Java 应用程序中 Bean 绑定和数据绑定的支持. 要学完本教程,您需要具备以下软件和资源. 软件或资源 要求的版本 NetBeans IDE 版本 7 ...
- 当数据库某张表数据发生变化时,更新c#程序中缓存的用法
参考:http://www.webkaka.com/tutorial/asp.net/2012/111912/(SqlDependency和SqlCacheDependency缓存的用法及具体步骤) ...
- TCP程序中发送和接收数据
这里我们来探讨一下在网络编程过程中,有关read/write 或者send/recv的使用细节.这里有关常用的阻塞/非阻塞的解释在网上有很多很好的例子,这里就不说了,还有errno ==EAGAIN ...
- qt 程序中执行额外程序和脚本
1.最简单的,我们可以通过system直接启动一个应用程序或者脚本:(但是要调用 #include <stdlib.h>) system("./helloworld") ...
- (转)C#.NET WINFORM应用程序中控制应用程序只启动一次
原文地址 :http://www.cnblogs.com/emanlee/archive/2009/08/31/1557379.html using System; using System.Thre ...
- Android程序中Acticity间传递数据
在Android开发过程中,在不同的Acitivity之间传递数据的情况是非常常见的.我花费了一点时间来总结Acitivity之间的数据传递,记录下来. 1.简单传递键值对 这种传递方式非常简单,只需 ...
- 如何在WPF的DiagramControl中绘制一个类型数据关系图的方法
https://www.devexpress.com/Support/Center/Question/Details/T418156 虽然是在wpf中,但是在win中也可以调用wpf控件,这个太棒了, ...
随机推荐
- idea springboot 微服务批量启动
概要 在使用IDEA开发微服务的时候,微服务比较多,启动起来比较麻烦,下面介绍一下使用批量启动微服务的方法. 方法 编辑当前项目根目录下的 .idea\workspace.xml 文件. 找到 < ...
- PySAGES结合CUDA SPONGE增强采样
技术背景 在前面的一篇博客中,我们介绍过PySAGES这个增强采样软件的基本安装和使用方法.该软件类似于Plumed是一个外挂增强采样软件,但是PySAGES是基于Python语言和Jax框架来实现的 ...
- Go语言实现国密证书加密与解析技术详解
Go语言实现国密证书加密与解析技术详解 前言 在当今数字化时代,信息安全成为企业和个人关注的焦点.国密算法作为中国自主研发的加密标准,广泛应用于各类安全场景.Go语言以其简洁.高效的特性,成为众多开发 ...
- docker-compose network名称定义
docker-compose启动的网络名称: 1.没有自定义网络名 $ cat docker-compose.yaml version: '2' services: zookeeper1: image ...
- SpringBoot项目请求路径中有正反斜杠的处理办法
在Application中添加静态代码块: //默认情况下Tomcat等服务器是拒绝url中带%2F或者%5C的URL,因为它们经浏览器解析之后就变成了/和\, // 服务器默认是拒绝访问的,所以需要 ...
- Qt音视频开发29-ffmpeg中x264/x265编码库支持
一.前言 有了解码当然对应又有编码,编码是信息从一种形式或格式转换为另一种形式的过程也称为计算机编程语言的代码简称编码.用预先规定的方法将文字.数字或其它对象编成数码,或将信息.数据转换成规定的电脉冲 ...
- Qt编写视频监控系统70-OSD标签和图形信息(支持写入到文件)
一.前言 作为一个完整的视频监控系统,用户还需要自定义一些OSD标签信息显示在对应通道上面,而且不止一个OSD标签信息,位置可以在四个角或者指定坐标显示.最开始本系统设计的时候,由于本人擅长的是pai ...
- UML之包与包图
了解UML的人都知道UML中也有包的概念,包在UML中作用与面向对象编程语言中类似,它是管理对象的工具,也是解决对象同名冲突的手段. 在UML中,包的表示图形是一个左上角带标签的矩形,而包名可以标注于 ...
- JVM实战—4.JVM垃圾回收器的原理和调优
大纲 1.JVM的新生代垃圾回收器ParNew如何工作 2.JVM老年代垃圾回收器CMS是如何工作的 3.线上部署系统时如何设置垃圾回收相关参数 4.新生代垃圾回收参数如何优化 5.老年代的垃圾回收参 ...
- Ps cs4 -把GIF背景变透明-简单操作,还可以将视频转换GIF
准备软件: 1.Ps cs4 2.QuickTime Player 7.74 开始: 1. 2.弹出文件选择框,但是发现不能选择GIF格式. 3.没关系,在文件名框输入*.*回车,就发现可以选择GIF ...