FIleSystemWatcher последний доступ (чтение) для медиа-файлов не работает - PullRequest
1 голос
/ 11 февраля 2012

Я доставляю мультимедийное содержимое в клиентскую систему (загрузка из Интернета) и хочу подтвердить, что мультимедийный файл был открыт (и просмотрен) оператором. Я использую средство просмотра файловой системы (C # 3.5), чтобы проверить время последнего доступа к файлу (поэтому, когда воспроизводится медиафайл, я должен получить событие) и отправляю подтверждение.

Я включил время последнего доступа в реестр моей машины с Windows 7 здесь и перезагрузил систему. Наблюдатель за файловой системой запускает события в открытом каталоге, но не в режиме воспроизведения мультимедиа.

Вот мой код:

private FileSystemWatcher fsWatcher = null;
private static Object objLock = new Object();

private void StartAccessWatcher(string _folderPath)
{
  fsWatcher = new FileSystemWatcher(_folderPath, "*.*");
  fsWatcher.Changed += new FileSystemEventHandler(fsWatcher_Changed);
  fsWatcher.IncludeSubdirectories = true;
  fsWatcher.NotifyFilter = NotifyFilters.LastAccess;
  fsWatcher.EnableRaisingEvents = true;
}

private void fsWatcher_Changed(object sender, FileSystemEventArgs e)
{
  lock (objLock)
  {
    fsWatcher.EnableRaisingEvents = false;
    DisplayMessage(string.Concat(e.ChangeType, "  ", e.FullPath));
    fsWatcher.EnableRaisingEvents = true;
  }
}

private void btn_StartWatcher_Click(object sender, EventArgs e)
{
  StartAccessWatcher(@"E:\Surewaves\Media-Store\MP1 Videos");
}

Вы также можете скачать мой пример кода с здесь .

Скажите, пожалуйста, как лучше всего этого достичь? Мне нужно получить последнее время доступа (когда какой-либо плеер воспроизводил видео, аудио, изображение или файл .swf)?

Ответы [ 2 ]

2 голосов
/ 05 июня 2015

В качестве обновления к этому трехлетнему вопросу данный код теперь работает правильно * с видео, воспроизводимыми на локальной машине.

На машине должен быть успешно включен lastAccess с помощью следующей команды

fsutil behavior set DisableLastAccess 0

как отмечено в вопросе.


* - на момент публикации этого поста использовался Windows Server 2012 R2

0 голосов
/ 11 февраля 2012

FileSystemWatcher используется для отслеживания изменений в указанном каталоге. Вы можете следить за изменениями в файлах и подкаталогах указанного каталога. В вашем случае нет никаких изменений в медиа-файлах. Я бы предложил попробовать расширить класс FileSystemWatcher и создать новые события для чтения медиа-файлов, а затем запустить эти события.

...