参考学习链接:https://docs.microsoft.com/zh-cn/dotnet/framework/wpf/advanced/walkthrough-caching-application-data-in-a-wpf-application?redirectedfrom=MSDN

  • 创建缓存类的实例,即,将实例化新的 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 应用程序中缓存应用程序数据的更多相关文章

  1. C#程序中从数据库取数据时需注意数据类型之间的对应,int16\int32\int64

    private void btn2_Click(object sender, RoutedEventArgs e)         {             using (SqlConnection ...

  2. MO拆分计划行程序中写入PRODUCTIONORDERS表数据出现重复导致报错(BUG)20180502

    错误提示:ORA-00001: 违反唯一约束条件 (ABPPMGR.C0248833319_6192)ORA-06512: 在 "STG.FP_MO_SPLIT", line 19 ...

  3. ABAP 在被访问的程序中获取访问程序的全局变量

    前些日子接到过一个看起来比较普通的需求: 存在一个系统标准函数组FG01,内含函数模块FM00,FM01……等等.在系统程序中,FM00会调用FM01,通过FM01获取获取某些数据. 需求要求,复制一 ...

  4. 在 Java 应用程序中绑定 Bean 和数据

    本指南介绍了 NetBeans IDE 对 Java 应用程序中 Bean 绑定和数据绑定的支持. 要学完本教程,您需要具备以下软件和资源. 软件或资源 要求的版本 NetBeans IDE 版本 7 ...

  5. 当数据库某张表数据发生变化时,更新c#程序中缓存的用法

    参考:http://www.webkaka.com/tutorial/asp.net/2012/111912/(SqlDependency和SqlCacheDependency缓存的用法及具体步骤) ...

  6. TCP程序中发送和接收数据

    这里我们来探讨一下在网络编程过程中,有关read/write 或者send/recv的使用细节.这里有关常用的阻塞/非阻塞的解释在网上有很多很好的例子,这里就不说了,还有errno ==EAGAIN ...

  7. qt 程序中执行额外程序和脚本

    1.最简单的,我们可以通过system直接启动一个应用程序或者脚本:(但是要调用 #include <stdlib.h>) system("./helloworld") ...

  8. (转)C#.NET WINFORM应用程序中控制应用程序只启动一次

    原文地址 :http://www.cnblogs.com/emanlee/archive/2009/08/31/1557379.html using System; using System.Thre ...

  9. Android程序中Acticity间传递数据

    在Android开发过程中,在不同的Acitivity之间传递数据的情况是非常常见的.我花费了一点时间来总结Acitivity之间的数据传递,记录下来. 1.简单传递键值对 这种传递方式非常简单,只需 ...

  10. 如何在WPF的DiagramControl中绘制一个类型数据关系图的方法

    https://www.devexpress.com/Support/Center/Question/Details/T418156 虽然是在wpf中,但是在win中也可以调用wpf控件,这个太棒了, ...

随机推荐

  1. 真正“搞”懂HTTPS协议19之HTTPS优化

    这是本系列的最后一篇了,其实本篇的内容也跟前两篇TLS的握手和优化有关系.其实HTTPS的核心就是TLS的明文握手连接,前两篇我们花了很大的篇幅来聊这些,另外一个就是在TLS握手完成后的密文传输部分了 ...

  2. uni-app中使用svg

    标签: svg js uni-app 前情 uni-app是我很喜欢的跨平台框架,它能开发小程序,H5,APP(安卓/iOS),对前端开发很友好,自带的IDE让开发体验也很棒,公司项目就是主推uni- ...

  3. 智能存储 | 超质感 HDR 生产,激活你的视神经

    视频平台尊贵的会员可以享受 4K HDR 超清视界,各类新型旗舰机都具备拍摄 HDR 视频的能力,3C 产品发布会必提 HDR 超清显示.想必各位看官感受到视觉逐渐被 HDR 浪潮侵袭了,那 HDR ...

  4. element 表格增加多选框 ,增加多选

    1. el-table 增加如下代码,就会出现多选框 <el-table-column type="selection" class="checkbox-inp&q ...

  5. 中电金信鲸Bot RPA荣获最佳人工智能解决方案

    近年来,数字经济已成为国家"十四五"规划和"新基建"战略的重要支撑.银行业作为我国经济体系的重要组成部分,其发展战略也出现了新的变化.数字化智能化转型成为银行业 ...

  6. zz 为什么我更喜欢 Python 的 Storm ORM

    为什么我更喜欢 Python 的 Storm ORM - @emacsway 的博客 很有意思的讨论.可能还是 mapping 比较实用. 另外,文中称赞有加的 Identity Map 并不适合并发 ...

  7. simpleui

    目录 一.simpleui 1.1 使用步骤 1.2 功能介绍 1.3 展示大屏 一.simpleui 之前公司里,做项目前后端结合,要使用权限,要快速搭建后台管理,使用djagno的admin直接搭 ...

  8. https://eggjs.org/zh-cn/basics/env.html#%E8%87%AA%E5%AE%9A%E4%B9%89%E7%8E%AF%E5%A2%83

    转载:https://eggjs.org/zh-cn/basics/env.html#自定义环境 运行环境 一个 Web 应用本身应该是无状态的,并拥有根据运行环境设置自身的能力. 指定运行环境 框架 ...

  9. 张正友的相机标定论文Flexible camera calibration by viewing a plane from unknown orientations的翻译

    张正友的相机标定论文Flexible camera calibration by viewing a plane from unknown orientations的翻译: 翻译的pdf版本为:htt ...

  10. 开源即时通讯IM框架MobileIMSDK的鸿蒙NEXT端开发快速入门

     相关链接: ① MobileIMSDK-鸿蒙端的详细介绍 ② MobileIMSDK-鸿蒙端的开发手册new(* 精编PDF版) 一.理论知识准备 您需要对鸿蒙Next和ArkTS开发有所了解: 1 ...