Создайте зависимость кэша от папки и ее подпапки - PullRequest
3 голосов
/ 12 февраля 2009

В ASP.NET я хотел бы сохранить объект в кеше, который зависит от всех файлов в определенной папке и ее подпапках. Простое добавление объекта с зависимостью от корневой папки не работает. Есть ли какой-либо разумный способ сделать это, кроме создания цепочки зависимостей для всех файлов?

1 Ответ

7 голосов
/ 12 февраля 2009

Я полагаю, что вы можете свернуть свою собственную зависимость от кэша и использовать 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);
    }
}
...