Невозможно закрыть и удалить открытый файл (.docx), который я проверил, был ли поврежден - PullRequest
0 голосов
/ 05 марта 2019

Проблема, с которой я сталкиваюсь, касается проверки документа .docx, для проверки я использую следующий метод:

 public static bool ValidateWordDocument(string filepath)
    {
        WordprocessingDocument wordprocessingDocument;
        try
        {
            wordprocessingDocument = WordprocessingDocument.Open(filepath, true);
            wordprocessingDocument.Close();
            return true;
        }
        catch (Exception e)
        {
            _logger.LogError($"El archivo {filepath} esta corrupto o se trata de un archivo ");
            return false;
        }
    }

Но когда он запускает исключение (поскольку файл поврежден и не может его открыть), он остается открытым и не может быть закрыт в перехватчике, поскольку он находится вне контекста WordprocessingDocument «instance?».

Затем, когда мне нужно удалить файл, который я должен был проверить, я не могу, потому что он открыт другим процессом: Ошибка удаления

Спасибо.

1 Ответ

1 голос
/ 05 марта 2019

Может быть, изменение его на что-то вроде этого поможет:

  try
    {
        wordprocessingDocument = WordprocessingDocument.Open(filepath, true);
        return true;
    }
    catch (Exception e)
    {
        _logger.LogError($"El archivo {filepath} esta corrupto o se trata de un archivo ");
        return false;
    }
finally{
 wordprocessingDocument.Close();
}
...