Использование C#, есть ли способ проверить, что файл используется. В частности, мне нужен способ отслеживать каталог .wav-файлов и посмотреть, какой звуковой файл был загружен. Примечание. Он может быть загружен различными приложениями.
Я посмотрел на Core Audio .. но я не могу найти ответа там. Я также пытался кодировать это, если файл заблокирован, но это также не дает решения. Поэтому, если вы знаете способ определения, какой звуковой файл ( .wav) в настоящее время воспроизводится, прокомментируйте.Есть ли способ проверить, что файл используется
ответ
protected virtual bool IsFileLocked(FileInfo file)
{
FileStream stream = null;
try
{
stream = file.Open(FileMode.Open, FileAccess.Read, FileShare.None);
}
catch (IOException)
{
//the file is unavailable because it is:
//still being written to
//or being processed by another thread
//or does not exist (has already been processed)
return true;
}
finally
{
if (stream != null)
stream.Close();
}
//file is not locked
return false;
}
Вот ссылка ссылка: File is in Use
Надеется, что это помогает.
Я пробовал это. Но это не сработает. – Eminem
Какая ошибка? Не могли бы вы отправить сообщение об ошибке. Это очень общее решение, которое работает практически для всех сценариев. Вот почему я дал вам ссылку. –
Если файл был открыт другим процессом в режиме FileShare.Read, тогда это вернет 'false', даже если файл в данный момент открыт. –
, так что вы хотите посмотреть, открывается ли файл другим приложением? или файл используется другим приложением, и файл заблокирован? или вы хотите посмотреть, начнется ли воспроизведение .wav? Я думаю, что это целые разные истории. –
В использовании я имею в виду файл, который воспроизводится. Я подумал, что как только файл будет загружен, он будет заблокирован .. но это is not – Eminem
Если приложение загружает файл в память и затем немедленно закрывает его, то контроль за ним с помощью выборки будет, по меньшей мере, подвержен ошибкам. Он будет использоваться только в течение времени, необходимого для его загрузки в память. –