Странное IOException с File.Copy: несуществующий файл, предположительно используемый другим процессом - PullRequest
0 голосов
/ 25 октября 2010

Это сводит меня с ума.

Я получаю кучу писем из почтового ящика и сохраняю их в виде файлов в папке.В настоящее время в почтовом ящике находится только одно письмо (это конкретное письмо не является проблемой, пробовал и другие).После поиска я объединяю тему письма с уникальной GUID-строкой, сохраняю ее в виде файла и создаю еще одну копию этого файла в другой папке.Это неоднократно дает мне IOException, говоря, что файл назначения не может быть получен (так как он предположительно используется другим процессом).Файл назначения не существует на данный момент, поэтому он не может быть использован.

Надеюсь, что кто-нибудь может помочь или, возможно, дать подсказку.

Заранее спасибо.

С уважением, Кевин

РЕДАКТИРОВАТЬ (подробнее)

        private static void _backupMailFile(string sourceFile, string destinationFile)
        {
            log.Info(String.Format("Archiving mail file '{0}' to '{1}'", sourceFile, destinationFile));

            try
            {
                File.Copy(sourceFile, destinationFile);
            }
            catch (Exception ex)
            {
                log.Error("Error while archiving mail: " + sourceFile, ex);
            }
        }

sourceFile = "D: \ Development \ POP3toSCSM \ POP3toSCSM \ bin \ Debug \ TempMails \ AW_ Outlook Web AppLight-47459c48-8c8c-4c51-be63-e6e2ddcc54d3.eml "

destinationFile =" C: \ MailIn \ Archive \ AW_ Outlook Web App Light-47459c48-8c8c-4c51-be63-e6e2ddcc54d3.eml "

Папка "C: \ MailIn \ Archive" на данный момент пуста.

Разрешения действительны.

Еще раз спасибо.

1 Ответ

0 голосов
/ 25 октября 2010

Это либо компонент Chilkat (сомневаюсь в этом), либо мой класс-оболочка вокруг его метода LoadEml.Как только я добавляю System.Threading.Thread.Sleep (250) после получения последней почты из почтового ящика, все работает просто отлично.Но разве вы не согласитесь с тем, что нет ничего плохого в пути назначения, в отличие от того, что читается в сообщении об исключении?

РЕДАКТИРОВАТЬ Думаю, я ошибся: - (

Здесьприходит след стека:

StackTrace = "bei System.IO .__ Error.WinIOError (Int32 errorCode, String MaybeFullPath) \ r \ n bei System.IO.File.InternalCopy (String sourceFileName, String destFileName, перезапись логического значения) \ r \ n bei System.IO.File.Copy (Строка sourceFileName, Строка destFileName) \ r \ n ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...