Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Высвободить файл для удаления / 3 сообщений из 3, страница 1 из 1
12.10.2004, 09:10
    #32733248
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Высвободить файл для удаления
Млин, наступил на грабли, а как с них слезть - пока незнаю...
Суть вопроса проста, пытаюсь показать на форме картинку:

Метод 1 (картинка показывается в своём стандартном размере):
Код: plaintext
1.
2.
3.
...
   PictureBox1.Image = Image.FromFile("C:\image_from_SQL.jpg")
...
Если следующим действием мне нужно физически удалить файл с харда, то для этого очищаю PictureBox1.Image вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
...
If Not (PictureBox1.Image Is Nothing) Then
            PictureBox1.Image.Dispose()
            PictureBox1.Image = Nothing
End If

        If File.Exists("C:\image_from_SQL.jpg") Then File.Delete("C:\image_from_SQL.jpg")
...


Метод 2 (картинка показывается маленькая - тобишь её представление):
Код: plaintext
1.
2.
3.
...
   PictureBox1.Image = Image.FromFile("C:\image_from_SQL.jpg").GetThumbnailImage( 200 ,  150 , Nothing, Nothing)
...
Если следующим действием мне нужно физически удалить файл с харда, то предыдущий метод очистки PictureBox1.Image уже не срабатывает и при попытке удалить файл выкидывает error: "доступ к файлу закрыт так как он используется другим процессом"...
Догадался посмотреть MSDN, и нашёл что крайне важно прописать вот такую штуку image.GetThumbnailImageAbort, но где и, главное КАК??? - я разобраться не могу...
P.S. Люди добрые, поможите, а то голова уже трещит от ударов...
...
Рейтинг: 0 / 0
12.10.2004, 09:42
    #32733303
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Высвободить файл для удаления
это особенность GDI+ (MS об этом знает, но в отличие от нас за баг не считает). Выход - загрузить через FileStream:

Код: plaintext
1.
2.
3.
FileStream fs = new FileStream(@"c:\Temp\w.bmp", FileMode.Open);
Image img = Image.FromStream(fs);
fs.Close();
this.pictureBox1.Image = img;
...
Рейтинг: 0 / 0
12.10.2004, 13:44
    #32733966
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Высвободить файл для удаления
Спасибо за идею, но, неужели нельзя высвободить файл напрямую (просто, я загружаю файл картинки в БД при помощи FileStream, считываю и сохраняю на хард тоже при помощи FileStream, а потом и в форму при помощи FileStream - помоему FileStream-ов неприлично много ). По логике, должен существовать какой то более удобоваримый способ...
Код: plaintext
1.
PictureBox1.Image = Image.FromFile("C:\image_from_SQL.jpg").GetThumbnailImage( 200 ,  150 , Nothing, Nothing)
В MSDN вроде написано что третьим аргументом (вместо Nothing) можно прописать вызов делегированной функции с параметром image.GetThumbnailImageAbort as Boolean, токма я понять немогу, что и как там писать???
P.S. For Кузя: может вечерком обсудим в прямом эфире (с удовольствием бы и сейчас вышел на связь, но на работе нет MSN Messenger )
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Высвободить файл для удаления / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]