2017-01-30 8 views
0

Использование C#, есть ли способ проверить, что файл используется. В частности, мне нужен способ отслеживать каталог .wav-файлов и посмотреть, какой звуковой файл был загружен. Примечание. Он может быть загружен различными приложениями.
Я посмотрел на Core Audio .. но я не могу найти ответа там. Я также пытался кодировать это, если файл заблокирован, но это также не дает решения. Поэтому, если вы знаете способ определения, какой звуковой файл (
.wav) в настоящее время воспроизводится, прокомментируйте.Есть ли способ проверить, что файл используется

+0

, так что вы хотите посмотреть, открывается ли файл другим приложением? или файл используется другим приложением, и файл заблокирован? или вы хотите посмотреть, начнется ли воспроизведение .wav? Я думаю, что это целые разные истории. –

+0

В использовании я имею в виду файл, который воспроизводится. Я подумал, что как только файл будет загружен, он будет заблокирован .. но это is not – Eminem

+0

Если приложение загружает файл в память и затем немедленно закрывает его, то контроль за ним с помощью выборки будет, по меньшей мере, подвержен ошибкам. Он будет использоваться только в течение времени, необходимого для его загрузки в память. –

ответ

1
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

Надеется, что это помогает.

+0

Я пробовал это. Но это не сработает. – Eminem

+0

Какая ошибка? Не могли бы вы отправить сообщение об ошибке. Это очень общее решение, которое работает практически для всех сценариев. Вот почему я дал вам ссылку. –

+2

Если файл был открыт другим процессом в режиме FileShare.Read, тогда это вернет 'false', даже если файл в данный момент открыт. –

 Смежные вопросы

  • Нет связанных вопросов^_^