2017-01-30 111 views
0

使用c#,有沒有辦法檢查文件是否在使用中。更具體地說,我需要一種方法來監視.wav文件的目錄,並查看哪個聲音文件已被加載。 注意。它可以被不同的應用程序加載。
我看過Core Audio ..但我似乎無法在那裏找到答案。 我也試過編碼,如果文件被鎖定,但也沒有提供解決方案。因此,如果您知道確定當前正在播放哪個聲音文件(
.wav)的方法,請發表評論。有沒有辦法檢查文件是否在使用

+0

所以你想看看如果文件被其他應用程序打開?或文件正在被另一個應用程序使用,並且文件被鎖定?或者你想看看.wav是否真的開始播放?我認爲這些是完全不同的故事 –

+0

通過使用我的意思是正在播放的文件。我認爲,一旦文件被加載,它將被鎖定..但它不是 – 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。 –

相關問題