Процесс System io ioexception не может получить доступ к файлу
Обновлено: 21.11.2024
Автопредложение помогает быстро сузить результаты поиска, предлагая возможные совпадения по мере ввода.
Ёити_Хиротаке
- Отметить как новое
- Добавить в закладки
- Подписаться
- Отключить звук
- Отправить сообщение другу
Сбой задачи перезагрузки с ошибкой System.IO.IOException Процесс не может получить доступ к файлу, поскольку он используется другим процессом.
Сообщение об ошибке перезагрузки или распространения задачи QlikView
System.IO.IOException: процесс не может получить доступ к файлу, поскольку он используется другим процессом.
Журнал задач показывает успешную перезагрузку, но указывает, что повторно загруженный документ не может быть сохранен:
Информация: перезагрузка успешно завершена
Информация: начало сохранения документа
Ошибка: не удалось сохранить исходный документ.. Exception=System.IO.IOException: процесс не может получить доступ к файлу, поскольку он используется другой процесс.
Ошибка: в System.IO.__Error.WinIOError(Int32 errorCode, String mayFullPath)
Ошибка: в System.IO.File.InternalReplace(String sourceFileName, String targetFileName, String destinationBackupFileName, Boolean ignoreMetadataErrors )
Ошибка: в QVBWrapper.Document.ReplaceSourceFile(ILogBucket logBucket, String replaceFromFileName, String replaceToFilename)
Ошибка: в QVBWrapper.Document.Save(ILogBucket i_LogBucket, String i_SaveAsFileName)
Окружающая среда:
После успешной перезагрузки файла приложения QlikView (QVW) старый файл удаляется и заменяется новым файлом, содержащим новые данные. Сообщение об ошибке указывает либо на то, что старый файл не удалось удалить, либо на то, что доступ к файлу слишком медленный для обработки запроса.
Чтобы определить, является ли доступ к файлам слишком медленным из-за задержки в сети или из-за задержек чтения/записи диска, просмотрите QlikView и его серверную систему общего доступа к файлам, чтобы узнать о важности быстрого доступа к файлам и о том, как отслеживать общие файловые ресурсы.
Кроме того.
В случае блокировок файлов, вызванных процессами, блокирующими исходный файл, наиболее распространенными процессами являются:
<УЛ>Рекомендуется исключить папки QlikView из антивирусной проверки. Дополнительные сведения см. в разделе Какие папки/файлы QlikView следует исключить из антивирусного сканирования.
Резервное копирование файлов QVW должно быть запланировано и запланировано таким образом, чтобы они не мешали задачам QlikView, чтобы избежать конфликтов доступа к файлам.
В целом проблема может быть решена только путем определения процесса, который блокирует файл. Подробнее о том, как определить процесс, который блокирует файл QVW, см. в разделе Мониторинг процессов. Как найти заблокированные файлы и процессы, блокирующие их.
Проект Android в формах Xamarin не создается
Выдает ошибку System.IO.IOException: Процесс не может получить доступ к файлу «C:\Project\100\android\assets\xxxx.dll», поскольку он используется другим процессом. где xxxx отличается при каждой попытке сборки
Я думал, что это связано с проблемой максимального пути Windows, поэтому я даже попытался установить Включить длинные пути Win32 = Включено в редакторе локальной политики и добавить True и C:\Project
Каждый раз показывает сообщение об ошибке с разными dll. 'C:\ProjectNameTemp\100\android\assets\NUglify.dll'
'C:\ProjectNameTemp\100\android\assets\AndUHD.dll' и так далее…
Также запускал процесс блокировки файлов, но ничего не нашел.
Потратил на это целый день, но безрезультатно. Обратите внимание, что решение собирается нормально и работает в Visual Studio для Mac, а также при выгрузке проекта Android.
Также пытался изменить свойства сборки Android, такие как общая среда выполнения компилятора dex и т. д., но это то же самое. Это расстраивает, что IDE не доступен. Не могу постоянно пользоваться Mac
Этапы воспроизведения
- Создание нового проекта форм Xamarin в Visual Studio Windows
- Построить
Ожидаемое поведение
Все проекты должны создаваться
Реальное поведение
Проект Android основан не только на Windows VIsual Studio, но и на Visual Studio Mac
Основная информация
- Версия с проблемой: нет данных.
- Последняя известная рабочая версия: нет данных.
- IDE: только Visual Studio для Windows
- Целевые платформы:
- iOS: нет данных
- Android: 10 SDK 29
- Универсальная платформа:
Скриншоты
Ссылка на воспроизведение
Временное решение
В настоящее время нет обходных путей, пытаюсь внести различные изменения в проект и посмотреть, работает ли что-нибудь.
Текст был успешно обновлен, но возникли следующие ошибки:
pmahend1 прокомментировал 30 апреля 2020 г.
@hartez Последняя стабильная версия Visual Studio 16.5.4. Пробовал все, что мог придумать, например, удалить bin obj. удаление .vs, переустановка Visual Studio, изменение настроек сборки Visual Studio, изменение ссылок на проекты, изменение параметров сборки Android. Ничего не работает
pmahend1 изменил заголовок [Ошибка] System.IO.IOException: Процесс не может получить доступ к файлу '. android\assets\xxxx.dll", потому что он используется другим процессом. 30 апреля 2020 г.
hartez прокомментировал 30 апреля 2020 г.
Но вы пытались перезапустить? Я спрашиваю только потому, что столкнулся с той же проблемой и смог исправить ее, перезапустив машину. Я подозреваю, что причиной был мошеннический процесс MSBuild или зависший экземпляр devenv.exe.
Еще один совет — установить максимальное количество параллельных процессов сборки, чтобы посмотреть, исправит ли это ситуацию. Попробуйте установить значение 1.
(Последний вариант я предлагаю только в качестве временного обходного пути; очевидно, это неприемлемое долгосрочное решение. Но если он сработает, я смогу передать его команде Android. .)
pmahend1 прокомментировал 1 мая 2020 г. •
Да. Я перезагружался много раз со вчерашнего дня.
Мой коллега предложил параллельный процесс 1, и я попробовал его, но он не работает. Казалось, он работал на него. Я перезагружал ноутбук несколько раз, но после внесения этого изменения я считаю, что не перезагружал свой ноутбук. Попробую завтра утром.
Я установил предварительную версию, но проблема осталась.
pmahend1 прокомментировал 1 мая 2020 г.
brendanzagaeski прокомментировал 5 мая 2020 г. •
Спасибо за отчет. Я назначу этот элемент для дальнейшего изучения командой.
Тем временем я также включу некоторые шаги по сбору данных, которые могут дать некоторую полезную информацию. Не беспокойтесь, если вы не выполните эти шаги прямо сейчас. У других членов команды могут быть другие диагностические шаги, которые они могут предложить.
Этапы сбора данных, которые стоит попробовать, если у вас будет возможность
Подготовьте среду Visual Studio, чтобы вы были готовы воспроизвести ошибку сборки при следующей сборке.
Загрузите и установите инструмент Microsoft PerfView.
Откройте командную строку.
Выполните команду, аналогичную следующей, чтобы начать сбор трассировки:
Вернитесь в Visual Studio и повторите обычные действия, чтобы увидеть ошибку сборки.
После того, как вы получите сообщение об ошибке сборки, вернитесь в PerfView и нажмите «Остановить сбор». Если после этого шага появится запрос о пустом пути к символу, можно нажать «Использовать пустой путь к символу».
Подождите, пока PerfView завершит обработку данных и создаст файл .etl.zip.
Прикрепите выходной файл .etl.zip по этому вопросу. Обратите внимание, что эта трассировка будет включать потенциально конфиденциальные сведения, такие как конкретные имена файлов из вашего проекта, поэтому, если вам нужно прикрепить ее в частном порядке, вы можете вместо этого прикрепить ее к соответствующему элементу сообщества разработчиков.
Необязательный предварительный анализ данных
При желании вы также можете попробовать изучить данные трассировки локально:
- Дважды щелкните выходной файл .etl.zip в окне проводника в PerfView и откройте элемент Расширенная группа > Файловые стеки ввода-вывода.
- Когда откроется окно "Выбрать процесс", нажмите кнопку "Все процессы" в нижней части окна.
- Выберите вкладку «По имени» в открывшемся новом окне.
- Введите имя проблемного файла (например, Plugin.Media.dll) в поле IncPats и нажмите клавишу ввода.
- В столбце "Имя" найдите элемент File Read., соответствующий проблемному пути, и дважды щелкните его. Откроется вкладка "Абоненты".
- На вкладке "Абоненты" сначала очистите поле GroupPats. Затем установите флажки в представлении данных, чтобы открыть стеки вызовов, и найдите строки, в которых упоминается Xamarin или Mono.
Это способ поиска методов, которые могут содержать дескриптор файла. Одним из усовершенствований этого метода является проверка в Advanced Group > Exception Stacks, чтобы найти время, когда возникает IOException, и сравнить его со временем в стеках файлового ввода-вывода.
Я пытаюсь сохранить файлы в БД, которая должна записывать файл как "BinaryData".
Я использую RadAsyncUpload, но когда я загружаю файл, я получаю расширение "System.IO.IOException: процесс не может получить доступ к файлу, поскольку он используется другим процессом". и файл загружается только в папку App_Data моего приложения, в автоматически созданную папку «RadUploadTemp».
Я пытался отключить упоминания пути в методе SaveFile, получая сообщение об ошибке "Путь не найден". Любая из доступных демонстраций телерика похожа на мой контекст.
Как решить эту проблему?
EDIT: ошибка была устранена добавлением использования "fileStream.Close();", тем не менее, теперь файл сохраняется как null, сохраняется только имя файла и разрешается только 1 операция, исчезая со второй.
Я создал целевую папку. отделить от временной папки. Поскольку имя файла сохранено, я полагаю, что моя логика близка к верной.
2 ответа, 1 принят
Вы можете проверить следующие ресурсы, связанные с доступом к временным файлам:
Это должно помочь вам получить доступ к самому файлу, сохранить его в базе данных, и если вы не зададите целевую папку, файл будет автоматически удален из временной папки.
Если файл по-прежнему используется другим процессом, вы можете проверить, какой процесс блокирует его, так как есть вероятность, что брандмауэр или антивирусное программное обеспечение могут поместить файлы в папку Temp в карантин.
С уважением,
Пётр Мильчев
Прогресс ТелерикЛюбите продукты Telerik и Kendo UI и считаете, что больше людей должны попробовать их? Пригласите коллегу-разработчика стать клиентом Progress, и каждый из вас сможет получить подарочный ваучер Amazon на 50 долларов США.
Я пытаюсь использовать аналогичный подход к демонстрации, сделанной с помощью OleDB, с входным потоком, назначая свойство filebytes. Тем не менее, я получаю нулевое значение в БД.
Чего мне не хватает? Я использую TargetFolder, и он успешно получает FileName.
Частично решил! Надеюсь, это окажется полезным. Мне не хватило скопировать байты в переменную. тем не менее, у меня все еще есть проблемы
Я могу сохранить файл, только если регистр БД пуст. Как добавить возможность замены файла в мой код? Когда я пытаюсь отредактировать файл, он все равно выдает тот же " " Процесс не может получить доступ к файлу, потому что он используется другим процессом.". Или это не разрешено?
И еще одна проблема заключается в том, что я использую RadAsyncUpload в окне, поэтому я могу выполнить только одну операцию до полной перезагрузки страницы. Можно ли использовать частичный постбэк в окне?
Если вам удастся получить загруженный файл в виде массива байтов, я считаю, что с AsyncUpload больше ничего не связано, потому что у вас есть копия этого файла. При этом, вероятно, ошибка связана с самой БД?
Эта ошибка может появиться, если вы попытаетесь изменить e.File.InputStream вместо обновления базы данных.
Мне удалось решить проблему, не привязывая файл к форме редактирования. Отображение элемента как пустого в форме позволяет мне нормально обновлять новый файл. Не идеальный сценарий, но позволяет мне продолжить.
У меня есть и другие проблемы с использованием этой реализации вместе с RadWindow, поэтому может быть что-то не так в моем коде или невозможно отобразить значение файла в форме редактирования?
Это зависит от всей вашей настройки, могут быть некоторые проблемы с конфигурацией.
Вы также можете попробовать встроенные возможности Grid с помощью всплывающего редактора и столбца GridAttachment вместо того, чтобы реализовывать все это с нуля.
Что касается AsyncUpload, вы можете получить файл только при выборе файла, а затем, как только он будет загружен, вы сможете получить к нему доступ на сервере, прежде чем он будет перемещен в целевую папку. Как только это будет сделано, AsyncUpload больше не сможет получить доступ к файлам, и вам потребуется специальный код для загрузки файла из БД.
Некоторые пользователи WinTOTAL сталкивались с ошибкой System.IO.IOException, когда файл в их установке WinTOTAL или Titan Drive повреждался. В этом документе объясняется, как устранить эту ошибку.
Документ 5127 | Последнее обновление: 29 декабря 2016 г., MJY
В редких случаях вы можете получить сообщение об ошибке примерно такого содержания:
Процесс System.IO.IOException не может получить доступ к файлу
C:\a la mode\WinTOTAL\Logs\Userlogs\"filename".ulg, поскольку он используется другим процессом в Microsoft .VisualBasic.Filesystem.Fileopen
«Имя файла» в приведенном выше списке зависит от профиля пользователя в WinTOTAL, который был поврежден.
Эта проблема обычно вызвана повреждением пользовательского файла в вашей установке WinTOTAL или Titan Drive.
Эту ошибку можно устранить, просто удалив проблемный файл. Вот как:
- Откройте WinTOTAL и нажмите «Справка», «О программе» в меню.
- На появившемся экране найдите и запишите каталог программ, который вы видите в списке. В наиболее распространенных установках каталог программ имеет вид
- C:\а-ля мод\WinTOTAL
- ИЛИ
- C:\WIN2000
- Закройте WinTOTAL и откройте проводник Windows.
- Перейдите к папке, которую вы записали на шаге 2.
- В папке WinTOTAL найдите и дважды щелкните папку Logs. Затем дважды щелкните папку Userlogs.
- В папке Userlogs нажмите Ctrl + A, чтобы выбрать все содержимое папки, а затем удалите эти файлы.
Если проблемы не устранены
Установка Titan Drive на вашем компьютере может привести к такому же поведению, если определенные пользовательские файлы внутри него со временем повреждаются. Если вы все еще сталкиваетесь с этой проблемой:
Пока мы переходим с Vault на Titan Drive, различные кнопки, настройки и имена файлов по-прежнему относятся к Vault.Несмотря на то, что они говорят Vault, эти предметы также используются для Titan Drive. Ссылки на Сейф будут заменены в будущем обновлении.
Читайте также: