【问题标题】:Create a cache dependancy on a folder and its sub-folder在文件夹及其子文件夹上创建缓存依赖项
【发布时间】:2010-10-07 05:11:42
【问题描述】:

在 ASP.NET 中,我想在缓存中存储一​​个对象,该对象依赖于特定文件夹及其子文件夹中的所有文件。仅添加依赖于根文件夹的对象是行不通的。除了在所有文件上创建依赖链之外,还有什么合理的方法可以做到这一点?

【问题讨论】:

  • 我提供的这个解决方案有效吗? - 您可以使用 IncludeSubdirectories 来包含或排除它们。由于触发了多个事件,您可能会发现问题。查看msdn.microsoft.com/en-us/library/…
  • 不知道还没来得及测试。是的,你已经说过了。

标签: asp.net caching asp.net-2.0 dependencies


【解决方案1】:

我相信你可以滚动你自己的缓存依赖并使用 FileSystemMonitor 来监控文件系统的变化。

更新:下面的示例代码

public class FolderCacheDependency : CacheDependency
{
    public FolderCacheDependency(string dirName)
    {
        FileSystemWatcher watcher = new FileSystemWatcher(dirName);
        watcher.Changed += new FileSystemEventHandler(watcher_Changed);
        watcher.Deleted += new FileSystemEventHandler(watcher_Changed);
        watcher.Created += new FileSystemEventHandler(watcher_Changed);
        watcher.Renamed += new RenamedEventHandler(watcher_Renamed);
    }

    void watcher_Renamed(object sender, RenamedEventArgs e)
    {
        this.NotifyDependencyChanged(this, e);
    }

    void watcher_Changed(object sender, FileSystemEventArgs e)
    {
        this.NotifyDependencyChanged(this, e);
    }
}

【讨论】:

  • 当该目录中的文件更改时,FileSystemWatcher 是否会引发事件? FileSystemWatcher 监视和整个树或只是顶级?
  • @AnthonyWJones - 您可以使用 IncludeSubdirectories 来包含或排除它们。由于触发了多个事件,您可能会发现问题。查看msdn.microsoft.com/en-us/library/…
  • 这很好用。但请注意,您需要设置 EnableRaisingEvents=true 否则它不会做任何事情。
猜你喜欢
  • 2019-11-24
  • 2022-06-13
  • 2020-07-18
  • 1970-01-01
  • 1970-01-01
  • 2019-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多