утечка памяти в TextBox ?
вопрос, а как освобождать память в таком случае ? (проверил, и в ListBox таже х..я)
Собственно вопрос, если в TextBox постоянно добавлять записи, то через Диспетчер задач видно, что растет память, которую использует данное приложение, если сделать что то типа Text1.text = "" то, циферки памяти остануться на прежнем уровне, то есть если у меня приложение будет сутками висеть с пополняющимися записями, то когда-нибудь ресурсы исчерпаются,
вопрос, а как освобождать память в таком случае ? (проверил, и в ListBox таже х..я)
Что есть такое - "в TextBox постоянно добавлять записи"? в смысле присваивать каждый раз новое значение? если такое наблюдается, то это или ошибка в самом компоненте или так и должна работать программа в виндах, то бишь то что показывает диспетчер, это еще не показатель того, что эту память жрет сам TextBox или сама программа, может винды зачем сами хранят эти значения или не хочет пока очищать. Например, станд. TextBox поддерживает отмену введенного текста Ctrl-z (даже системное сообщение в виндах есть для этого)
Что есть такое - "в TextBox постоянно добавлять записи"? в смысле присваивать каждый раз новое значение?
НУ добавлять можно например так:
Text1.SelStart = Len(Text1)
'Text1.SelText = vbNewLine & "blablabla"
[QUOTE]Originally posted by SergeySV
Что есть такое - "в TextBox постоянно добавлять записи"? в смысле присваивать каждый раз новое значение?
НУ добавлять можно например так:
Text1.SelStart = Len(Text1)
'Text1.SelText = vbNewLine & "blablabla"
Попробуй Text1.Text = VbNullString (как ни странно, иногда такие глюки помогает обойти). К тому же, что у тебя "жрёт" память? *.exe, или VB - проект? Вполне возможно, что в экзюшнике такого не будет наблюдаться.
К тому же. попробуй поздним связыванием динамически подгружать этот текстбокс, а по окончании его использования, или вместо очистки просто "грохать" и перезагружать.
На крайняк, попробуй поставить сервис-паки для VStudio;)
Попробуй Text1.Text = VbNullString (как ни странно, иногда такие глюки помогает обойти). К тому же, что у тебя "жрёт" память? *.exe, или VB - проект? Вполне возможно, что в экзюшнике такого не будет наблюдаться.
К тому же. попробуй поздним связыванием динамически подгружать этот текстбокс, а по окончании его использования, или вместо очистки просто "грохать" и перезагружать.
На крайняк, попробуй поставить сервис-паки для VStudio;)
VBNullString не дает результатов, память жрет *.exe, насчет динам. подгрузки и перезагрузки компонента , этот вариант я на последок оставил, а вот как обойтись без этого , да и просто интересно почему так происходит ?
VBNullString не дает результатов, память жрет *.exe, насчет динам. подгрузки и перезагрузки компонента , этот вариант я на последок оставил, а вот как обойтись без этого , да и просто интересно почему так происходит ?
Скорее всего, TextBox все данные, впихнутые в него, хранит где-то во внутреннем буфере, содержание которого не заменяет при смене текста, а только добавляет к которому новые данные. Если серьёзные объёмы памяти хапает (только проверь ещё раз, что это именно твоё приложение, а не "левак" какой-нибудь память жрёт!), то тут или динамическая подгрузка остаётся, или на API колдовать.:{ Сильно память отжирает-то?
P.S. Винда какая?
TextBox.Value=""
TextBox.Value="ля-ля"
TextBox.Value="ля"
и посмотри как там с памятью, произошла ли очистка, а то может он не хочет сразу старое стирать (вдруг пригодится :) )
одна запускает таймер, вторая останавливает, третья - чистит Текст, по таймеру, к примеру добавляю строку каждые 100 мсек.
причем если просто Text1.text = "qqqq", то все нормально, а если
Text1.SelStart = Len(Text1)
'Text1.SelText = vbNewLine & "blablabla" , то не очень нормально
Жрет конечно не сильно, но меня в принципе вопрос интересует?
Винда - Server 2000 (SP4)
я сначала заметил в своем приложении, а потом просто сделал форму, на ней TextBox, и три кнопки,
одна запускает таймер, вторая останавливает, третья - чистит Текст, по таймеру, к примеру добавляю строку каждые 100 мсек.
причем если просто Text1.text = "qqqq", то все нормально, а если
Text1.SelStart = Len(Text1)
'Text1.SelText = vbNewLine & "blablabla" , то не очень нормально
Жрет конечно не сильно, но меня в принципе вопрос интересует?
Винда - Server 2000 (SP4)
Так кто ж тебе так сразу ответит. Глюк с утечкой памятью в контроле возможен. Виноват ли в этом сам контрол и в чем ошибка... это токо программисты microsoft'а могут сказать (ну можно еще конечно граммотных спецов собрать и устроить предметное тестирование, чтобы они ответили на вопрос есть или нет, но не больше).
Могу токо заметить, например, известный факт, что в первых библиотеках ADO, была ошибка при создании Connection приводившая к утечке памяти, на каждый очередной Connection по 8 кб.
Так кто ж тебе так сразу ответит. Глюк с утечкой памятью в контроле возможен. Виноват ли в этом сам контрол и в чем ошибка... это токо программисты microsoft'а могут сказать (ну можно еще конечно граммотных спецов собрать и устроить предметное тестирование, чтобы они ответили на вопрос есть или нет, но не больше).
Могу токо заметить, например, известный факт, что в первых библиотеках ADO, была ошибка при создании Connection приводившая к утечке памяти, на каждый очередной Connection по 8 кб.
я не знаю, попробуйте если не в лом такой же сварганить примерчик, как я описал, и проверить,
а там можно сравнить будет
я не знаю, попробуйте если не в лом такой же сварганить примерчик, как я описал, и проверить,
а там можно сравнить будет
Просто у тебя еще ситуация не очень типичная. Обычно все создают TextBox пару значений в него запихнут и все: либо больше не пихают, либо окно с этим TextBox вскоре закрывается, а чтобы так как у тебя - постоянно висело и туда все запихивалось...
Кстати, а на скоко утечка памято то, я понимаю, что от текста зависит, но она как, хоть соизмерима с размером символьной строке введенной ранее?
Просто у тебя еще ситуация не очень типичная. Обычно все создают TextBox пару значений в него запихнут и все:
А если например надо вести какой-нить лог, то куда кроме TextBox`а писать инфу? Можно конечно в ListBox, но с ним такая же хрень....
[QUOTE]Originally posted by SergeySV
Просто у тебя еще ситуация не очень типичная. Обычно все создают TextBox пару значений в него запихнут и все:
А если например надо вести какой-нить лог, то куда кроме TextBox`а писать инфу? Можно конечно в ListBox, но с ним такая же хрень....
Ну в Memo какой-нибудь или RichTextFormat...
а что с логом, ну и добавляй себе скоко влезет, утечка памяти будет только если ты постоянно добавляешь , очищаешь и опять все это повторяешь.
Попробую сегодня вечером глянуть что у меня там происходит...
Ну в Memo какой-нибудь или RichTextFormat...
а что с логом, ну и добавляй себе скоко влезет, утечка памяти будет только если ты постоянно добавляешь , очищаешь и опять все это повторяешь.
Попробую сегодня вечером глянуть что у меня там происходит...
Вопрос. Зачем лог писать в текстбокс? Обычно его пишут в файл.
А если надо в текстбокс писать, то тогда уж можно RichTextBox и впрямь попробовать. К тому же, если такая оказия, попробуй в лейбл писать. Да полно всяких контролов...
Хотя, где-то в какой-то книжке по VB я видел пример текстового редактора на текстбоксе, который позволяет работать с текстами большой длинны. Тоесть, если там такое приводится, особенно уважаемыми авторами, то, занчит. утечка эта не такая уж существенная... Хотя как знать...