Как освободить занятые приложением файлы

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Versusnet
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 10.03.2008 (Пн) 16:27

Как освободить занятые приложением файлы

Сообщение Versusnet » 10.03.2008 (Пн) 16:37

Добрый День!
Есть небольшая проблемка.
1)В програмке создаются обьекты из пространств имено system.io (FileInfo, directoryinfo, Driveinfo)
2) затец процедура обрабатывает файлы в указанных папках (перемещает, копирует, удаляет) по определенному интервалу таймера.
Возникает проблема (поскольку файлы обрабатываются в цикле), что программа не может получить доступ к файлу, только что с которым работала, т.е. из Винды не удалить его нельзя, ни править.... получается что-то вроде исключительнгой блокировки файла приложением....
После остановкуи таймера, через некоторое время все становится нормально....
Может кто сталкивался, в чем тут подвох???
Что посоветуете для высвобождения ресурсов файловых????
Заранее спасибо

asharky
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 22.06.2004 (Вт) 0:39
Откуда: Батоны-ларьки-поребрики...

Re: Как освободить занятые приложением файлы

Сообщение asharky » 10.03.2008 (Пн) 16:50

Где код?
В культурной столице проститутки берут книгами...

Versusnet
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 10.03.2008 (Пн) 16:27

Сообщение Versusnet » 11.03.2008 (Вт) 9:26

Код: Выделить всё

dim a as directoryinfo = new directoryinfo(source)
dim b as array = a.GetFiles()

..........................

for each file in b
идет обработка и т.п.

file.copy (source, destenation)
   if file.exists(some_file) then
      file.move (source2, destenation2)
      file.move (source3, destenation4)
   end if
next



Вот в результате работы файл destenation2 и destenation4 становятся доступными для удаления и правка спустя некоторое время, около нескольких секунд в результате работы... Никак не могу понять почему

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 11.03.2008 (Вт) 10:43

Мягко говоря странный код.
Во первых, почему используется Array вместо массива FileInfo, а во-вторых, а разве есть у FileInfo методы Copy и Move? Есть CopyTo и MoveTo, но несколько с другим синтаксисом.
А трабла походу в том, что методы эти не ждут окончания копирования, а возвращают управление сразу.
Весь мир матрица, а мы в нем потоки байтов!

Versusnet
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 10.03.2008 (Пн) 16:27

Сообщение Versusnet » 11.03.2008 (Вт) 10:49

переменная Б обьявляется как массив файлов, содержащихся в папке...
Спасибо, стоило выпить кофейку, я нашел в чем проблема,

В результате обработки файла, они отправлялись по почте прикреплением,
и функция, которая это делала не освобождала ресурсов.
Стоило только доавить метод Dispose(), как все стало на свои места

Беда в том, что я не смог выложить исходник, поскольку была проблема с его копированием. Политиками запрещено копировать текст в терминал:(:(:( из Буфера обмена. Огромное спасибо, за отклик

asharky
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 22.06.2004 (Вт) 0:39
Откуда: Батоны-ларьки-поребрики...

Сообщение asharky » 11.03.2008 (Вт) 12:56

Versusnet писал(а):Беда в том, что я не смог выложить исходник, поскольку была проблема с его копированием. Политиками запрещено копировать текст в терминал:(:(:( из Буфера обмена. Огромное спасибо, за отклик
В ГРУ пишете проги?
В культурной столице проститутки берут книгами...

Versusnet
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 10.03.2008 (Пн) 16:27

Сообщение Versusnet » 11.03.2008 (Вт) 14:52

К счастью нет, но проблема такая вот есть. Главное, что рабозрался в чем проблема!


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

    TopList  
cron