我正在使用以下方法检查文件是否已被使用...似乎工作得很好但我的问题是,如果我有excel打开,有时文件流实际打开并打开excel文件,目前正在检查。
任何人都知道为什么文件实际打开而不是在离开using语句时关闭?
编辑:更多内容,它打开excel文件,然后显示一个消息框,告诉我该文件可用于读/写
我把以下内容放在评论中,但我认为这与我使用IsFileLocked代码有关,可能实际上是真正的原因?
我正在使用IsFileLocked代码和filewatcher。当filewatcher关闭时,我检查excel文件是否仍在使用中,如果它没有被使用,那么我从该excel文件中查询数据。
处理.. 1.)Excel文件已被其他用户更改或正在更改2.)确保它仍未与IsFileLocked方法一起使用3.)如果文件不再使用,则查询数据从excel文件,但有时excel文件实际打开在用户的计算机上,正在观看excel文件的更改..如果这是有道理的
protected virtual bool IsFileLocked(string path)
{
try
{
using (FileStream stream = File.Open(path, 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
{
}
//file is not locked
return false;
}