2016-08-08 3 views
0

У меня есть аналогичный issue. Но я использую службу Windows для чтения файла из определенного каталога. Возможно, несколько файлов приходят в одно и то же время или по одному. проблема в том, когда я помещаю файл, который он читает, но когда я помещаю другой файл, он выдает исключение доступа к файлу. Пожалуйста помоги. Благодарю.Ошибка доступа к файлу с помощью FileSystemWatcher при чтении файла с помощью службы windows

Вот код:

private static void OnCreated(object source, FileSystemEventArgs e) 
    { 
     try 
     { 
      var data = new FileData(); 
      data.ReadFile(e.FullPath); 

     } 
     catch (Exception ex) 
     { 
      WriteLogForError(ex.Message, String.Empty, ErrorLogPath); 
     } 
    } 
+0

Показать, что вы код .. также, просто потому, что файл создан, не означает, что его еще не записывается в .. зависит от размера файла. – BugFinder

+1

Вы не контролируете файловую систему или другие процессы (например, источник файла, как говорит bugfinder, или антивирус и т. Д.). Довольно хорошо, ваш единственный вариант - * справиться с файлом, недоступным для чтения и сна/цикла до тех пор, пока вы не сможете открыть файл в нужном вам режиме, и у вас есть полное содержание, на которое вы надеетесь. –

+0

@Damien_The_Unbeliever Можете ли вы дать мне пример кода для этого? –

ответ

0

Вы пытаетесь получить доступ к файлу в момент его создания. Другой процесс, создающий файл, может все еще писать на него, и, следовательно, вы еще не должны его трогать.

Решение неудобно: поместите имя файла в некоторый список/очередь, запустите таймер, и через несколько секунд попробуйте прочитать его (не забудьте попробовать ... поймать здесь и повторить попытку, есть нет прямого уведомления о том, что другой процесс завершил свою работу).

+0

I m try Thread.Sleep(); ждать, пока файл записывается. Если я получу успех, я отправлю ответ с кодом. –