检查Excel文件是否已打开时发出问题

时间:2016-08-31 20:35:55

标签: c# filestream using

我正在使用以下方法检查文件是否已被使用...似乎工作得很好但我的问题是,如果我有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;
    }

0 个答案:

没有答案