Я хотел бы обнаружить и действовать, когда используется spesific mp3-файл (воспроизведенный как сигнал тревоги в другом приложении) в C#.Сохранение файла журнала, связанного с использованием медиафайлов
Ожидание идей, Спасибо всем.
Я хотел бы обнаружить и действовать, когда используется spesific mp3-файл (воспроизведенный как сигнал тревоги в другом приложении) в C#.Сохранение файла журнала, связанного с использованием медиафайлов
Ожидание идей, Спасибо всем.
Windows не обновляет lastaccesstime, когда файл открыт для чтения, поэтому его нельзя использовать.
Есть два способа, которые я могу придумать, но оба связаны с опросом системы.
Петля каждые X секунд и попытайтесь открыть файл для записи. Если это не удается, файл открыт.
Зациклируйте каждые X секунд и используйте запрос WMI, чтобы узнать, используется ли файл.
В любом случае вам придется обрабатывать последовательные «открытия» в течение определенного периода времени, считая только один экземпляр.
Вы можете использовать метод File.LastAccessTime.
Подробности здесь:
http://msdn.microsoft.com/en-us/library/system.io.file.getlastaccesstime.aspx
По существу использовать цикл, который peroidically проверки.
Проблема с этим решением заключается в том, что из документации MSDN «Этот метод может возвращать неточное значение, поскольку он использует собственные функции, значения которых не могут постоянно обновляться операционной системой».
спасибо, это можно рассматривать как один из вариантов, но мне нужно надежное решение, чтобы действовать, это может сильно потерпеть неудачу. – Bartu
Это может быть ваше лучшее решение, потому что Windows не всегда обновляет значение. Вероятно, гарантированный способ заключается в том, чтобы зацепиться прямо перед чтением из файловой системы (неизвестность неизвестна). –
проверял его, похоже, что функция lastAcessTime вообще не работает. Но в любом случае, спасибо за вашу идею. – Bartu
, в этом случае я должен изменить файл тревоги по умолчанию с файлом пустоты x + 1 second long, чем я бы не пропустил никаких случаев ... – Bartu