Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Длинный цикл - пропадает изображение контролов / 16 сообщений из 16, страница 1 из 1
30.05.2004, 11:25
    #32539983
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длинный цикл - пропадает изображение контролов
У меня вот какой вопрос
В приложении при нажатии кнопки выполняется оочень длинный цикл (около 10 мин) В это время форма приложения как то странно себя ведёт (если например открыть другое окно и оно заслонит окно работающего приложения то потом форма становится просто белая без контролов) По завершении работы (т е после окончания цикла) всё становится на свои места Я думаю что это должно лечится командами для обновления изображения монитора... Если кто сталкивался с таким делом напишите как это исправить???
...
Рейтинг: 0 / 0
30.05.2004, 11:29
    #32539986
Green2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длинный цикл - пропадает изображение контролов
Надо дать форме отобразить себя.

На Visual Basic есть такая функция как DoEvent, Если её периодически вызывать в цикле, то окно будет отрисовываться.

...
Рейтинг: 0 / 0
30.05.2004, 12:16
    #32540009
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длинный цикл - пропадает изображение контролов
Большое спасибо
Я тут от скуки накопал такое Me.Update
Попробовал - вроде получилось
Как думаете правильно это или нет?
...
Рейтинг: 0 / 0
30.05.2004, 15:29
    #32540067
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длинный цикл - пропадает изображение контролов
Не совсем. Такая строка просто обновит форму принудительно. Но проблме не в том что форума не хочет обновлятся, она не может , все сообщения для лаждого контрола и формы в целом становятся в очередь и ждут завершения цикла. Doevents предоставит возможность обработки этой очереди. Чем чаще тем больше обтаботок. ПОнатыкай его в самых медленных местах, вложенных циклах.

Magnus
...
Рейтинг: 0 / 0
30.05.2004, 17:20
    #32540101
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длинный цикл - пропадает изображение контролов
Да, всё так и есть, как сказано
Сделал так
Код: plaintext
1.
2.
3.
4.
5.
6.
For
  ...
  Application.DoEvents()
  Me.Update
  ...
Next
Me.Update мне тоже пришлось в ставить
Это позволило на форме отображать информацию из цикла в реальном времени
Код: plaintext
1.
2.
3.
4.
5.
6.
For each longstring as string in array
   ...  
   Application.DoEvents()
   Me.Update
   label1.text=longstring
   ...
Next
(может кому пригодится... Лично меня эта проблема 6 месяцев "колбасила")
ОГРОМНОЕ СПАСИБО
...
Рейтинг: 0 / 0
30.05.2004, 19:05
    #32540114
Green2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длинный цикл - пропадает изображение контролов
//офф
автор
оочень длинный цикл (около 10 мин)

У меня есть циклы и по часу.

Тут, на каком-то форуме человек оговорился о цикле в 40 часов.
...
Рейтинг: 0 / 0
30.05.2004, 23:53
    #32540254
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длинный цикл - пропадает изображение контролов
IMXO. Длинной циклов надо не мерятся а думать что с ней делать ибо ничто не вечно в этом и мире и видя ... эээ. я начинаю повторятся.

Вообщем это не очень хорошо.

Magnus
...
Рейтинг: 0 / 0
31.05.2004, 08:20
    #32540400
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длинный цикл - пропадает изображение контролов
Господа, всё намного проще
Суть моего приложения: взять файл и скопировать его в нужное место с нужным именем
Количество файлов около 14000 а общий объём около 4.5 Гб (DVD матрица, последующая запись)
Длина цикла зависит от количества и объёма соответственно (чем больше - тем, дольше... можно довести и до часу, если пытаться обработать 27 Гб, только в этом нет необходимости)
Оптимизировать я и так старался (раньше было дольше 10 мин)
При моём небольшом общении с VB.NET мне подумалось, что это длинный цикл,
никакого пижонства с моей стороны в том что я посчитал его длинным НЕБЫЛО
P.S. Кстати, смысл в 40 часовых циклах я вообще не вижу... Мне кажется, в этом случае легче работу руками выполнить, не прибегая к VB.NET или т.п.
...
Рейтинг: 0 / 0
31.05.2004, 13:24
    #32540898
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длинный цикл - пропадает изображение контролов
А может и оптимизируем :).
ЗАкин основной кусок кода который работу делает.


Magnus
...
Рейтинг: 0 / 0
31.05.2004, 18:00
    #32541552
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длинный цикл - пропадает изображение контролов
Инфа - аллюр xxx (не комерческая, а государственная тайна)
С удовольствием бы закинул, да боюсь последствий...
Да и не к чему это - меня и всех окружающих устраивает 10 мин.
Хотя спасибо за предложенную помощь...
...
Рейтинг: 0 / 0
01.06.2004, 08:45
    #32541922
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длинный цикл - пропадает изображение контролов
2 vladgrig
Читаем про треды в хелпе и не знаем таких проблем.

Код: plaintext
1.
2.
Dim Thread As New System.Threading.Thread(AddressOf [MySuperSub])
Thread.Start()

При этом весь цикл происходит в этой процедуре, а с формой можно делать что угодно.
...
Рейтинг: 0 / 0
01.06.2004, 09:09
    #32541952
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длинный цикл - пропадает изображение контролов
Спасибо всем огромное
Всё и так заработало, и смасла (в моём случае) в создании выделенных процедур с дальнейшим вызовом при событии Button.Clic я не вижу
Если кто хочет помочь - лучше поделитесь, как сделать событие кнопки с "паузой" (и последующей возможностью продолжения) для такого рода циклов и (или) с прерыванием цикла (типа, аварийного выхода по требованию пользователя)
...
Рейтинг: 0 / 0
01.06.2004, 09:59
    #32542048
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длинный цикл - пропадает изображение контролов
2 vladgrig
Аварийный выход по требованию также можно сделать через треды, а в отдельной процедуре проверять значение глобальной переменной типа boolean, т.е. имееим процедуру, в которой цикл и в нначале процедуры присваиваем переменной false, выход из цикла в случае значения true переменной. На форме кнопка stop, которая эту переменную переводит true - сразу получаем выход из цикла.
...
Рейтинг: 0 / 0
01.06.2004, 10:31
    #32542156
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длинный цикл - пропадает изображение контролов
Да я тут тоже кое что уже накопал
Вопрос по созданию отдельного потока дико интересен (при этом методе можно и паузу сделать и тд)
Но, как всегда, но
http://]http://oz.by/books/more108084.html
стр. 502
"...Програмное обеспечение достаточно сложно написать хорошо - займитесь многопоточностью, и она может привести к плачевным результатам.
...Знайте, с чем вы собираетесь столкнуться. Используйте потоки только при необходимости. Ожидайте возникновения ошибок. Обращайтесь за помощью к более опытным разработчикам и не срывайте сроки разработки, надеясь на значительное увеличение быстродействия за счёт введения многопоточности. ..
...Вероятность возникновения ошибок можно снизить за счёт реорганизации кода, максимально возможным образом изолируя многопоточный код, и разработки планов работ на случай катострофического отказа в многопоточном коде."
И, тем не менее, будем вгрызыться - ибо ЦЕЛЬ оправдывает СРЕДСТВА...
...
Рейтинг: 0 / 0
22.10.2004, 01:12
    #32749429
kalex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длинный цикл - пропадает изображение контролов
Так держать ! Русские не сдаются ! и т.д.
...
Рейтинг: 0 / 0
29.10.2004, 15:29
    #32761335
Артём Л
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Длинный цикл - пропадает изображение контролов
vladgrigзаймитесь многопоточностью, и она может привести к плачевным результатам.
...Знайте, с чем вы собираетесь столкнуться. Используйте потоки только при необходимости. Ожидайте возникновения ошибок. Обращайтесь за помощью к более опытным разработчикам и не срывайте сроки разработки, надеясь на значительное увеличение быстродействия за счёт введения многопоточности. ..
...Вероятность возникновения ошибок можно снизить за счёт реорганизации кода, максимально возможным образом изолируя многопоточный код, и разработки планов работ на случай катострофического отказа в многопоточном коде."
И, тем не менее, будем вгрызыться - ибо ЦЕЛЬ оправдывает СРЕДСТВА...

звучит как запугивание.
На самом деле при правильном использовании многопоточность является очень хорошим средством и в твоем случае - очень правильным решением. А что б тебе немного стало ясно о правильной реализации работы с потоками в .нет держи статью
http://www.gotdotnet.ru/LearnDotNet/NETFramework/604.aspx
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Длинный цикл - пропадает изображение контролов / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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