Страница: 1 |
Вопрос: В GDI+ возникла ошибка общего вида | Добавлено: 10.03.11 17:50 |
Автор вопроса: ![]() |
Подскажите, что делаю не так!
На форме содержится Timer1(100мсек), ImageList1(2 иконки 16х16х32), NotifyIcon1. Код работает, но после 5-6 минутной работы вылетает ошибка: System.Runtime.InteropServices.ExternalException не обработано ErrorCode=-2147467259 Message=В GDI+ возникла ошибка общего вида. Source=System.Drawing Public Class Form1
Dim c As Integer = 0 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Timer1.Enabled = True End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick If IsKeyLocked(Keys.CapsLock) = True Then NotifyIcon1.Icon = Icon.FromHandle(CType(ImageList1.Images(c), Bitmap).GetHicon()) If c <> 1 Then c = +1 Else c = 0 End If Else NotifyIcon1.Icon = Icon.FromHandle(CType(ImageList1.Images(1), Bitmap).GetHicon()) End If End Sub End Class |
Ответы | Всего ответов: 14 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 192496851 Вопросов: 75 Ответов: 3178 |
Профиль | Цитата | #1 | Добавлено: 11.03.11 00:58 |
как минимум, ты не освобождаешь ресурсы свежсозданной иконки. Каждые 100 мс. |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #2 | Добавлено: 11.03.11 01:03 |
Большой утечки не будет, так как сборщик мусора все равно будет находить потерявшиеся объекты, финализировать, а в финализаторе у них стоит вызов Dispose.
Другой вопрос, что мешает создать заранее 2 объекта Icon и в таймере подставлять то один то другой? |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 9 Ответов: 53 |
Профиль | Цитата | #3 | Добавлено: 11.03.11 03:25 |
Мне нужно, чтобы при включенном CapsLock иконка меняла свой цвет (2 иконки с разным задним фоном, которые должны содержаться в ресурсах файла, а не в папке с программой). ImageList для этого вполне подходит (тем более, что я его использую для остальной части кода). |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #4 | Добавлено: 11.03.11 17:16 |
Нет необходимости каждый раз создавать иконку из данных в ImageList, достаточно сделать заране из ImageList создать 2 нужных тебе иконки, затем менять их в таймере. Кол-во операций с GDI сильно уменьшится, вероятно, ошибка тоже пропадет. Память тоже менее активно будет использоваться. |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 9 Ответов: 53 |
Профиль | Цитата | #5 | Добавлено: 11.03.11 21:04 |
Был у меня перерыв в изучении программирования 2 года. Теперь начинаю всё с начала. Если не трудно, приведи пример. Наверно клёпки в голове не хватает. |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 0 Ответов: 42 |
Профиль | Цитата | #6 | Добавлено: 12.03.11 02:43 |
|
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 0 Ответов: 42 |
Профиль | Цитата | #7 | Добавлено: 12.03.11 02:45 |
ой, сорри не подумал:
сразу не понял зачем c нужно( |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 9 Ответов: 53 |
Профиль | Цитата | #8 | Добавлено: 12.03.11 11:44 |
Спасибо, но до этого и я бы додумался бы. Мне нужно, чтобы иконка мигала при включенном CapsLock, а у NtifyIcon свойство Icon не индексируется. Вот в чем проблема. |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #9 | Добавлено: 12.03.11 17:13 |
здесь нужно добавить еще 4 строчки кода. |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 9 Ответов: 53 |
Профиль | Цитата | #10 | Добавлено: 13.03.11 13:20 |
? |
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 192496851 Вопросов: 75 Ответов: 3178 |
Профиль | Цитата | #11 | Добавлено: 13.03.11 16:19 |
какие же, Артем |
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #12 | Добавлено: 14.03.11 05:52 |
Это вопрос на 64 000 рублей! |
Номер ответа: 13 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 192496851 Вопросов: 75 Ответов: 3178 |
Профиль | Цитата | #13 | Добавлено: 14.03.11 10:06 |
Artyom пишет:
здесь нужно добавить еще 4 строчки кода. Полагаю, что эти?
|
Номер ответа: 14 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 9 Ответов: 53 |
Профиль | Цитата | #14 | Добавлено: 18.03.11 20:17 |
Не думаю... |
Страница: 1 |
|