HostFileChangeMonitor
HostFileChangeMonitor 类是 FileChangeMonitor 类型的具体实现。 此类密封,因此无法扩展。 如果要使用现有缓存实现以及监视更改的文件和目录,此类非常有用。
对于每个指定的文件或目录路径,HostFileChangeMonitor 类在发生以下任何更改时触发更改通知:
被监视文件或目录的的名称更改。
指定的文件或目录在创建监视器时不存在,但后来被创建。 换句话说,在被监视项的范围内创建文件或目录。
更改的被监视文件的大小。
被监视文件的内容已更改,或被监视目录的内容已更改。
文件或目录的访问控制列表 (ACL) 已更改。
被监视文件或目录已被删除。
如果被监视的文件或目录同时发生了太多更改,则 HostFileChangeMonitor 实例可能失去特定更改的跟踪。 在此方案中,HostFileChangeMonitor 类触发更改通知。 当 HostFileChangeMonitor 实例监视某个目录,并且短期内在目录结构的范围内发生了许多更改时,很可能发生此情况。
由于 HostFileChangeMonitor 类的用途只是通知受监控的文件和目录中内容有更改,因此有关特定更改没有捕获到的详细信息并不被认为是重要的。 HostFileChangeMonitor 类的用途在于提供状态已更改的通知,以便逐出缓存项。 由于 HostFileChangeMonitor 类没有明确指明更改了什么,因此内部更改跟踪溢出不相关。
当您向 HostFileChangeMonitor 实例提供路径时,目录和文件路径必须是目录或文件的完整路径。 不允许使用相对路径以及在路径中使用通配符字符。
当 HostFileChangeMonitor 类用于 ASP.NET 应用程序时,用于访问被监视项的 Windows 标识将是 ASP.NET 应用程序的应用程序标识。 换句话说,应用程序标识将是以下项之一:
进程标识。
配置的应用程序标识。
应用程序从 UNC 共享中运行时的 UNC 凭据。
当 HostFileChangeMonitor 类用于非 ASP.NET 应用程序时,在内部使用 FileSystemWatcher 类监视文件。 因此,将用于受监视文件或目录的任何访问控制列表 (ACL) 应用于当前线程的 Windows 标识。
举例如:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Runtime.Caching;
using System.IO; public partial class _Default : System.Web.UI.Page
{
protected void Button1_Click1(object sender, EventArgs e)
{
ObjectCache cache = MemoryCache.Default;
string fileContents = cache["filecontents"] as string;
if (fileContents == null)
{
CacheItemPolicy policy = new CacheItemPolicy();
policy.AbsoluteExpiration = DateTimeOffset.Now.AddSeconds(10.0);
List<string> filePaths = new List<string>();
string cachedFilePath = Server.MapPath("~") + "\\cacheText.txt";
filePaths.Add(cachedFilePath);
policy.ChangeMonitors.Add(new HostFileChangeMonitor(filePaths)); // Fetch the file contents.
fileContents = File.ReadAllText(cachedFilePath) + "\n" + DateTime.Now.ToString();
cache.Set("filecontents", fileContents, policy);
}
Label1.Text = fileContents;
}
}
HostFileChangeMonitor的更多相关文章
- 使用.net的Cache框架快速实现Cache操作
本文转载自:http://www.cnblogs.com/TianFang/p/3430169.html .NET 4.0中新增了一个System.Runtime.Caching的名字空间,它提供了一 ...
- C# 调用配置文件SQL语句 真2B!
/********************************************************************************* ** File Name : SQ ...
- 定义 ICache 接口,以及实现默认的 ASP.NET 缓存机制
本文定义 ICache 接口,以及实现默认的 ASP.NET 缓存机制(即通过 System.Web.Caching.Cache)来缓存,将来也可以通过扩展,替换默认实现. 下面直接贴代码了: ICa ...
- 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Caching; usi ...
- .Net牛刀小试-1缓冲使用
根据文件名缓冲文件: /// <summary> /// 根据文件名缓冲指定目录文件 /// </summary> public class FileCacheAdapter ...
- Winform里面的缓存,MemoryCache使用
缓存在很多情况下需要用到,合理利用缓存可以一方面可以提高程序的响应速度,同时可以减少对特定资源访问的压力.本文主要针对自己在Winform方面的缓存使用做一个引导性的介绍,希望大家能够从中了解一些缓存 ...
- 为程序使用内存缓存(MemoryCache)
为了程序的灵活性,可能为程序使用了XML等外部文件存储配置,但也有可能文件内容会被频繁读取,为了减少磁盘的读取次数,提高程序性能,可以将频繁读取的配置文件缓存到内存中,加速配置的读取.并且需要可以在配 ...
- Asp.net中使用缓存(cache)
做了一个时间优化的项目,目的就是缩短程序过程中的时间花费,最后发现了asp.net和asp.net core 中都有缓存工具来进行缓存,以加快访问速度. 找了官方demo来进行分析: ObjectCa ...
- 缓存-MemoryCache Class
这是使用MemoryCache缓存的一个例子. private void btnGet_Click(object sender, EventArgs e) { ObjectCache cache = ...
随机推荐
- MongoDB-3: 查询(一)
一.简介 MongoDB提供了db.collection.find() 方法可以实现根据条件查询和指定使用投影运算符返回的字段省略此参数返回匹配文档中的所有字段. 二.db.collection.fi ...
- Vue(4)- 获取原生的DOM的方式、DIY脚手架、vue-cli的使用
一.获取原生的DOM的方式 在js中,我们可以通过id.class或者标签获取DOM元素,vue中也为我们提供了获取原生DOM的方法,就是给标签或者组件添加ref属性,通过this.$refs获取,如 ...
- MySQL按时间查找
RecentMutations表的结构如图,现在的需求是需要查找到2017年09月08日前10天的变体总数: SQL语句:SELECT SUM(MutantNumber) FROM RecentMut ...
- 静默安装oracle 11g及参数配置优化详解
一.安装前准备工作1.修改主机名#vi /etc/hosts //并添加内网IP地址对应的hostname,如下127.0.0.1 localhost::1 ...
- c# 图片加密解密的实例代码
c# 图片加密解密的实例代码. 代码: using System; using System.Collections.Generic; using System.Text; using System. ...
- Appium的Java封装
文章出处 http://blog.csdn.net/niubitianping/article/details/52612211 一.为什么需要封装? 封装的本意就是为了方便.简洁. 二.Androi ...
- BOM对象,math对象document对象的属性和操作和 事件的基本操作
Math对象 //该对象中的属性方法 和数学有关. abs(x) 返回数的绝对值. exp(x) 返回 e 的指数. floor(x) 对数进行下舍入. log(x) 返回数的自然对数(底为e). m ...
- 用python实现一个计算器
import re def atom_cal(exp): # 计算乘除法 if '*' in exp: a,b = exp.split('*') return str(float(a) * float ...
- HDU - 6333 Problem B. Harvest of Apples (莫队+组合数学)
题意:计算C(n,0)到C(n,m)的和,T(T<=1e5)组数据. 分析:预处理出阶乘和其逆元.但如果每次O(m)累加,那么会超时. 定义 S(n, m) = sigma(C(n,m)).有公 ...
- Environment类包含的几个有用的方法
1.获取操作系统版本(PC,PDA均支持) Environment.OSVersion 2.获取应用程序当前目录(PC支持) Environment.CurrentDirectory 3.列举本地硬盘 ...