2017-01-30 105 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。 –

相关问题