Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.61/106: Рейтинг темы: голосов - 106, средняя оценка - 4.61
 Аватар для Бельфегор
688 / 601 / 139
Регистрация: 08.05.2009
Сообщений: 1,098

Ошибка удаления файла cannot access the file because it is being used by another process

16.07.2010, 16:05. Показов 20663. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
написал такую функцию
C#
1
2
3
4
5
6
7
8
9
10
11
private Bitmap GetBitmap(string name)
        {
            using (FileStream fs = new FileStream(FileName, FileMode.Open))
            {
                Image image = Image.FromStream(fs);                 
                Bitmap bmp = new Bitmap(image);
                image.Dispose();
                fs.Close();
                return bmp;
            }
        }
но когда пытаюсь удалить файл
C#
1
File.Delete(FileName);
Вылетает ошибка "The process cannot access the file because it is being used by another process." То есть нет доступа к файлу, потому что он открыт FileStream-ом. Но ведь написано fs.Close(); да еще FileStream в using-e, то есть вызывается Dispose() после использвания.
Подскажите пожалуйста в чем проблема?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.07.2010, 16:05
Ответы с готовыми решениями:

О чем говорит ошибка "error The process cannot access the file *.tlog because it is being used by another process"?
Может кто встречался с этой ошибкой. Помогите избавиться от нее.

Salsa20 File Encryption: The process cannot access the file because it is being used by another process
Использую алгоритм Сальса20, вот мой код: using (var salsa = new Salsa20.Salsa20()) { using (var...

The process cannot access the file because it is being used by another process
Здравствуйте, столкнулся с проблемой. При компиляции кода в MSVS 12 выдаётся следующая ошибка: ...

30
Padawan
 Аватар для Johnny_D
473 / 323 / 30
Регистрация: 30.01.2010
Сообщений: 1,841
16.07.2010, 16:17
наверно надо использовать finalize
0
 Аватар для Бельфегор
688 / 601 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
16.07.2010, 16:19  [ТС]
если можно по подробнеe
0
Padawan
 Аватар для Johnny_D
473 / 323 / 30
Регистрация: 30.01.2010
Сообщений: 1,841
16.07.2010, 16:28
msdn!
0
 Аватар для kirill29
2098 / 1263 / 173
Регистрация: 01.02.2009
Сообщений: 2,842
16.07.2010, 16:30
За место
Цитата Сообщение от VelZeVuL Посмотреть сообщение
C#
1
fs.Close();
используй
C#
1
fs.Dispose();
0
 Аватар для Бельфегор
688 / 601 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
16.07.2010, 16:32  [ТС]
одно и т же
0
 Аватар для kirill29
2098 / 1263 / 173
Регистрация: 01.02.2009
Сообщений: 2,842
16.07.2010, 16:33
Johny_D, у VelZeVuL'a используется FileStream, а у него нет метода Finalize(), но есть метод Dispose().

Добавлено через 27 секунд
VelZeVuL, что значит одно и тоже
1
 Аватар для Бельфегор
688 / 601 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
16.07.2010, 16:35  [ТС]
правильно нет метода finalize, только dispose()
кстати разницы нет писать dispose или using{}
0
118 / 119 / 20
Регистрация: 21.01.2010
Сообщений: 252
16.07.2010, 16:56
А если Image = null добавить после Image.Dispose()?
0
 Аватар для Бельфегор
688 / 601 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
16.07.2010, 17:03  [ТС]
Не помогло
0
 Аватар для FireOwl
62 / 44 / 14
Регистрация: 01.07.2009
Сообщений: 145
16.07.2010, 22:01
C#
1
GC.Collect
Может вызвать сборщик мусора?
0
 Аватар для Бельфегор
688 / 601 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
17.07.2010, 00:10  [ТС]
Вызывал, все равно ничего не помогает!
0
Padawan
 Аватар для Johnny_D
473 / 323 / 30
Регистрация: 30.01.2010
Сообщений: 1,841
17.07.2010, 00:47
Кхм, чем не шутит черт, а вы ничем другим файл не держите?
0
 Аватар для Бельфегор
688 / 601 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
17.07.2010, 00:59  [ТС]
нет точно не держу! Очень странно! Измучился уже!
0
Padawan
 Аватар для Johnny_D
473 / 323 / 30
Регистрация: 30.01.2010
Сообщений: 1,841
17.07.2010, 01:15
unlocker'ом проверьте какой процесс держит ресурс
0
 Аватар для Mikant
1322 / 995 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
17.07.2010, 02:41
пойду в порядке следования сообщений

Johny_D, Finalize НЕЛЬЗЯ использовать никогда в .NET

kirill29, двойной Dispose() его убьет (дальше по сообщениям написано почему)

_Art_, image = null - никогда не спасет ситуацию. GC сделает свою работу тогда, когда САМ поймет

FireOwl, НИКОГДА не делай GC.Collect() - плохо кончится. (за ответами - гугл) : без шуток

Johny_D, а вот как раз Unlocker ничего не даст)) (но путь правильный)

знаешь, что такое "служба индексирования файлов Windows" ?
0
118 / 119 / 20
Регистрация: 21.01.2010
Сообщений: 252
17.07.2010, 09:41
Почти ваш метод, у меня все работает.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        private void button1_Click(object sender, EventArgs e)
        {
            CreateGraphics().DrawImage(GetBitmap(@"F:\234.bmp"), 0, 0);
            File.Delete(@"F:\234.bmp");
        }
 
        private Bitmap GetBitmap(string name) 
        {
            using (FileStream fs = new FileStream(name, FileMode.Open)) // вот здесь лишь изменен.
            {
                Image image = Image.FromStream(fs);
                Bitmap bmp = new Bitmap(image);
                image.Dispose();
                fs.Close();
                return bmp;
            }
        }
_Art_, image = null - никогда не спасет ситуацию. GC сделает свою работу тогда, когда САМ поймет
Обнуление ссылок и позволяет GC быстрей понять, что объект не нужен, раз ссылок нет. Нэ?
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
17.07.2010, 10:47
VelZeVuL, зачем вы битмат загружаете через какую то хитрую ж..., если один из конструкторов принимает строку, содержащую имя файла для загрузки битмапа?
C#
1
2
3
private Bitmap GetBitmap(string fileName) {
  return new Bitmap(fileName);
}
Цитата Сообщение от _Art_ Посмотреть сообщение
Обнуление ссылок и позволяет GC быстрей понять, что объект не нужен, раз ссылок нет. Нэ?
Ссылка и так отпадет при выходе из метода. Или ты думаешь, что когда ты ссылку обнулишь, GC возмет да и посреди выполения метода начнет сборку мусора, так что ли?
0
 Аватар для Бельфегор
688 / 601 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
17.07.2010, 10:53  [ТС]
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
VelZeVuL, зачем вы битмат загружаете через какую то хитрую ж..., если один из конструкторов принимает строку, содержащую имя файла для загрузки битмапа?
C#
1
2
3
private Bitmap GetBitmap(string fileName) {
  return new Bitmap(fileName);
}
Ссылка и так отпадет при выходе из метода. Или ты думаешь GC возмет да и посреди выполения метода начнет сборку мусора?
Затем что файл stream не закрывается вашим способом.

Добавлено через 3 минуты
Разобрался! Bitmap который возврощает метод ставился как изображение к одному pixturBox! Так вот я сделал pictureBox public-ом и перед удалением файла дополнительно сделал pictureBox.Dispose(). И заработало! Парадокс какой то!
ВСЕМ БОЛЬШОЕ СПАСИБО!
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
17.07.2010, 10:59
Цитата Сообщение от VelZeVuL Посмотреть сообщение
Затем что файл stream не закрывается вашим способом.
Ты себе как это предствляешь, разработчики Framework'а файл открывают, загружают, а закрывать забывают? Все закрывается, не в этом дело.
VelZeVuL, ты вот все ходишь кругом да около, ты может еще в 10 местах несчастный файл открываешь. ВЕСЬ код покажи.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.07.2010, 10:59
Помогаю со студенческими работами здесь

Ошибка в коде: Couldn't process file
Здравствуйте, уважаемые форумчане. Внезапно студия выдала такое: Couldn't process file Form1.resx due to its being in the Internet...

При считывании текстового файла выдает ошибку "file is being used by another process"
private static bool ChekStatus(string login) { bool status = false; ...

Установка PHP, ошибка No such file or directory: couldn't spawn child process: c:/php3/7.php
у меня стоит апач. поставил php3. Но почему-то при обращении к PHP скриптам в файле лога ошибка типа: (2)No such file or directory:...

Ошибка: File access denied
Вот код: //Cоздаёт файл с таким же названием, только буква o в названии русская. AssignFile(outfile2,...

Ошибка Access to the database file is not allowed
Ошибка при запуске. Access to the database file is not allowed.


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru