Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/25: Рейтинг темы: голосов - 25, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 20.10.2012
Сообщений: 57

Как избежать ошибки файл занят другим процессом

25.02.2013, 16:28. Показов 5436. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Допустим, есть программа, которая открывает файл. На форме есть поле для отображения файла, текстовое поле и кнопа.
В текстовом поле вводится новое имя файла, при нажатии кнопки файл переименовывается. Как при этом избежать ошибки "Файл используется другим процессом", т.е. сделать так, чтобы файл не использовался моей программой?

Эта ошибка выдается даже тогда, когда файл и не открыт. Я делал так: получил имя файла, копирнул его в другое место, открыл его. При переименовывании изначального файла ошибка все равно есть.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.02.2013, 16:28
Ответы с готовыми решениями:

Как удалить файл, который занят другим процессом
Не могу удалить текстовой файл. Команда выглядит вот так My.Computer.FileSystem.DeleteFile(filepath & "\" &...

Редактирование загруженного файла в Image: ошибка - файл занят другим процессом
Загружаю все файлы jpg из выбранной папки для отображения в Image Dim LB as New ListBox() Dim dlg as New OpenFileDialog() Private...

Файл занят другим процессом. Можно ли узнать, когда он станет доступен?
Доброго времени суток! В моем приложении нужно удалить файл (приложением созданный же), но иногда вылетает ошибка: файл занят другим...

10
 Аватар для Nachrichter
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
25.02.2013, 16:51
Если я всё правильно понял, то можно использовать:

VB.NET
1
.Dispose()
1
0 / 0 / 0
Регистрация: 20.10.2012
Сообщений: 57
25.02.2013, 17:23  [ТС]
А как его использовать?
0
 Аватар для Nachrichter
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
25.02.2013, 17:31
Олегарх, скинь кусок кода, в котором проблема.
0
0 / 0 / 0
Регистрация: 20.10.2012
Сообщений: 57
25.02.2013, 21:12  [ТС]
Цитата Сообщение от Nachrichter Посмотреть сообщение
Олегарх, скинь кусок кода, в котором проблема.
Функция открытия файла:
VB.NET
1
2
3
4
5
6
7
Dim myBitmapImage As New BitmapImage()
        myBitmapImage.BeginInit()
           My.Application.impath = openfile.FileName 'присвание переменной impath полного пути открываемого файла
        My.Application.imname = FileIO.FileSystem.GetName(My.Application.impath) ' получение имени файла
        IO.File.Copy(My.Application.impath,"C:\Program Files" & My.Application.imname)' создание копии
        myBitmapImage.UriSource = New Uri("C:\Program Files" & My.Application.imname) 'открытие копии
        myBitmapImage.EndInit()

Функция переименования:
VB.NET
1
2
3
4
 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles OKBut.Click
My.Application.imname = FileName.Text ' FileName-текстбокс. Здесь присваивание нового имени
 FileIO.FileSystem.RenameFile(My.Application.impath, My.Application.imname & IO.Path.GetExtension(My.Application.impath))  ' процесс переименования, где и идет ошибка
End Sub
0
 Аватар для Nachrichter
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
25.02.2013, 22:27
Предлагаю следующее:
1) Для просмотра открывать не копию, а исходный файл.
2) Процедуру копирования перенести в событие нажатия кнопки и копировать уже с новым именем.
3) Попытаться открыть скопированный и переименованный файл.
0
0 / 0 / 0
Регистрация: 20.10.2012
Сообщений: 57
26.02.2013, 13:36  [ТС]
Цитата Сообщение от Nachrichter Посмотреть сообщение
Предлагаю следующее:
1) Для просмотра открывать не копию, а исходный файл.
2) Процедуру копирования перенести в событие нажатия кнопки и копировать уже с новым именем.
3) Попытаться открыть скопированный и переименованный файл.
Сначала я и пытался открывать исходный файл, с копией сделал уже потом из-за этой ошибки.
Насчет переименованного- переименование выходит, но скопировать новый темп не получается из-за того ,что я его использую, так что я в тупике) Хотелось бы узнать о Dispose поподробнее.
0
 Аватар для Nachrichter
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
26.02.2013, 14:26
Цитата Сообщение от Олегарх Посмотреть сообщение
Хотелось бы узнать о Dispose поподробнее.
MSDN

P.S.: Я так понял, задача - переименовать отображаемую картинку?
1
0 / 0 / 0
Регистрация: 20.10.2012
Сообщений: 57
27.02.2013, 17:22  [ТС]
Цитата Сообщение от Nachrichter Посмотреть сообщение
MSDN

P.S.: Я так понял, задача - переименовать отображаемую картинку?
Переименовать и отобразить переименованную. Как в просмотрщике фотографий windows -есть пункт меню Свойства, там можно задать имя. При нажатии ОК файл переименовывается.

Полазил я по msdn, но так и не нашел, как именно вызывать dispose?
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Class MainWindow
    Implements IDisposable
  Private disposed As Boolean = False
  Public Overloads Sub Dispose() Implements IDisposable.Dispose
        Dispose(True)
        GC.SuppressFinalize(Me)
    End Sub
    Protected Overridable Overloads Sub Dispose(disposing As Boolean)
        If disposed = False Then
            If disposing Then
 
                disposed = True
            End If
           
        End If
    End Sub
вот так, насколько я понял, реализуется idisposable. Но как вызывать сборку мусора? Командой Dispose(), Dispose(true), Me.Dispose() или как-то по-другому? Можно ли делать это в теле какой-либо функции или Sub?
0
 Аватар для Nachrichter
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
27.02.2013, 18:34
Вот, накидал переименование:

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
Dim OFD As New OpenFileDialog
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If OFD.ShowDialog = DialogResult.OK Then
            PictureBox1.Image = Image.FromFile(OFD.FileName)
        End If
    End Sub
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        PictureBox1.Image.Dispose()
        FileIO.FileSystem.RenameFile(OFD.FileName, TextBox1.Text & ".jpg")
    End Sub
Перед тем, как давать файлу новое имя, строка "PictureBox1.Image.Dispose()" очищает весь выбор.
0
0 / 0 / 0
Регистрация: 20.10.2012
Сообщений: 57
27.02.2013, 18:50  [ТС]
Вот тут до меня и дошло, в чем моя главная ошибка. Я забыл упомянуть, что использую WPF
А там с Dispose намного сложнее
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.02.2013, 18:50
Помогаю со студенческими работами здесь

Процесс не может получить доступ к файлу, т.к файл занят другим процессом
Процесс не может получить доступ к файлу, т.к файл занят другим процессом Как закрыть открытый файл по указанному пути?...

Ошибка открытия файла, так как он занят другим процессом
Возникла проблема: при нажатии на кнопку прописал код, чтобы открывался файл из определенной директории. Private Sub Button4_Click(ByVal...

Программно узнать занят ли файл каким либо процессом
Как программно узнать занят ли файл каким либо процессом? И как зациклить программу, чтобы она проверяла занятость файла процессом, и как...

Как проверить занят ли файл другим процессом?
Собсна вопрос описан в топике) Нужно узнать как можно осуществить проверку доступа к файлу, занял ли он другим процессом или нет. Если...

Как удалить файл который занят другим процессом?
Все Здрасте! Уважаемые такая проблема, облазил весь интернет не нашел подходящего решения. Пишу сюда в надежде получить правильный ответ. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru