Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Преодоление зависания во время выполнения цикла / 25 сообщений из 28, страница 1 из 2
25.06.2007, 14:52
    #34617566
@TM@ROZчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преодоление зависания во время выполнения цикла
у меня выполняется цикл фор от 1 до 100000. во время каждого прохождения он выбирает из полутораста значений селект кейза одно, потом выводит в статус бар выведено столькото символов, потом наращивает переменную, и т.д. и т.п. как сделать чтобы виндовс не зависал при клике сворачивании и разворачивании окна? и реагировал на нажатия кнопок?
...
Рейтинг: 0 / 0
25.06.2007, 14:54
    #34617576
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преодоление зависания во время выполнения цикла
DoEvents
...
Рейтинг: 0 / 0
25.06.2007, 14:55
    #34617581
@TM@ROZчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преодоление зависания во время выполнения цикла
не успел темго написать уже ответ. :-)
...
Рейтинг: 0 / 0
25.06.2007, 14:55
    #34617584
@TM@ROZчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преодоление зависания во время выполнения цикла
сча проверю
...
Рейтинг: 0 / 0
25.06.2007, 14:58
    #34617594
@TM@ROZчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преодоление зависания во время выполнения цикла
а дуевентс куда писакать? в смысле к какому объекту?
...
Рейтинг: 0 / 0
25.06.2007, 15:08
    #34617649
gjghjc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преодоление зависания во время выполнения цикла
Сразу после FOR.... или как ты там цикл организовываешь.
С уважением, Николай.
...
Рейтинг: 0 / 0
25.06.2007, 15:57
    #34617881
@TM@ROZчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преодоление зависания во время выполнения цикла
Спасибо огромное! И исчо 2 вопроса. А ДуЭвентс, чисто теоретически, что он делает? И второй: при нажатии на любую кнопку весь фор заново начинается. Почему?
...
Рейтинг: 0 / 0
25.06.2007, 16:02
    #34617914
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преодоление зависания во время выполнения цикла
Грубо - позволяет окнам обрабатывать события. Поэтому нужно дизейблить ненужные кнопки, чтобы не было побуждений в них тыркаться.
...
Рейтинг: 0 / 0
25.06.2007, 16:04
    #34617925
@TM@ROZчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преодоление зависания во время выполнения цикла
ну и оставлю только кнопку остановки! юзверям дай волю - конец проге :-)
...
Рейтинг: 0 / 0
26.06.2007, 17:08
    #34620862
@TM@ROZчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преодоление зависания во время выполнения цикла
у меня возникла новая проблема. программа доволоьно долго присваивает 30000 символов переменной текстбоксу. это преодолимо?
...
Рейтинг: 0 / 0
26.06.2007, 17:13
    #34620888
@TM@ROZчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преодоление зависания во время выполнения цикла
в смысле не просто долго присваивает но и виснет таймер с дуевентсом не подходит - проверял
...
Рейтинг: 0 / 0
26.06.2007, 18:36
    #34621222
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преодоление зависания во время выполнения цикла
Может код покажете?
...
Рейтинг: 0 / 0
27.06.2007, 14:38
    #34623423
@TM@ROZчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преодоление зависания во время выполнения цикла
всё оч банально:
Код: plaintext
1.
Text2.text = otvet
но дело в том что переменная очень длинная. а событие таймера в этот момент работать отказывается. только после выведения
...
Рейтинг: 0 / 0
27.06.2007, 15:27
    #34623671
michael R
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преодоление зависания во время выполнения цикла
CopyMemory может помочь для больших текстов
...
Рейтинг: 0 / 0
27.06.2007, 16:35
    #34623986
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преодоление зависания во время выполнения цикла
@TM@ROZчегвсё оч банально:
Код: plaintext
1.
Text2.text = otvet
но дело в том что переменная очень длинная. а событие таймера в этот момент работать отказывается. только после выведения

Ваш otvet каким типом отдекларирован? И приведите пример его значения, если возможно. И вы уверены, что задержка именно в этой строке?..

Вообще, дайте нам значение переменной otvet, а мы посмотрим, сколько на самом деле времени занимает ее присвоение.
...
Рейтинг: 0 / 0
27.06.2007, 16:45
    #34624039
gjghjc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преодоление зависания во время выполнения цикла
ИМХО проще будет исходник выложить... а то
автору меня возникла новая проблема. программа доволоьно долго присваивает 30000 символов переменной текстбоксу. это преодолимо?
этак значение otvet растянется на пару десятков страниц :)
С уважением, Николай.
...
Рейтинг: 0 / 0
27.06.2007, 17:18
    #34624167
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преодоление зависания во время выполнения цикла
Можно двумя способами выкрутиться:
1. Делать Doevents не в каждой итерации (например каждую сотую)
2. Просваивать значение панели на StatusBar-е. Она работать будет без doevents
...
Рейтинг: 0 / 0
27.06.2007, 17:22
    #34624182
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преодоление зависания во время выполнения цикла
И, ограничьте длину строки выводимой в текстбокс: Text2.text = Mid(otvet,1,50)
...
Рейтинг: 0 / 0
28.06.2007, 18:16
    #34627101
@TM@ROZчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преодоление зависания во время выполнения цикла
michael R, каким образом?

VladConn, Strting'ом

Worobjoff1. Делать Doevents не в каждой итерации (например каждую сотую)
поясните пожалуйста
...
Рейтинг: 0 / 0
29.06.2007, 22:05
    #34629809
@TM@ROZчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преодоление зависания во время выполнения цикла
ups
...
Рейтинг: 0 / 0
30.06.2007, 12:07
    #34630044
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преодоление зависания во время выполнения цикла
@TM@ROZчегпоясните пожалуйстаВы не можете сами догадаться так сделать:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
Dim m_StopProcess As Boolean

Private Sub btnRun_Click()
   Dim i As Long
   Dim j As Long
   Dim s As String
   m_StopProcess = False
   j =  1 
   For i =  1  To  30000 
      StatusBar1.Panels( 1 ) = "item " & i
      s = s & GetRandomString
      StatusBar1.Panels( 2 ) = Mid(s,  1 ,  50 )
      j = j +  1 
      If j >=  100  Then
         DoEvents
         j =  1 
      End If
      If m_StopProcess Then Exit For
   Next
End Sub

Private Sub btnStop_Click()
   m_StopProcess = True
End Sub

Private Function GetRandomString() As String
   Dim i As Long
   Dim n As Long
   Dim s As String
   n = Rnd *  9  +  1 
   For i =  1  To Rnd
      s = s & Chr(Rnd *  48  +  49 )
   Next
   GetRandomString = s
End Function

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
   m_StopProcess = True
End Sub
...
Рейтинг: 0 / 0
30.06.2007, 15:50
    #34630194
@TM@ROZчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преодоление зависания во время выполнения цикла
и какое это имеет отношение к текстбоксу?
...
Рейтинг: 0 / 0
30.06.2007, 15:59
    #34630196
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преодоление зависания во время выполнения цикла
@TM@ROZчеги какое это имеет отношение к текстбоксу?
Какому текстбоксу? Вы собственные вопросы читаете? http://sql.ru/forum/actualpost.aspx?bid=22&tid=445012&mid=4334848&p=1&act=quot#4328575
...
Рейтинг: 0 / 0
30.06.2007, 16:45
    #34630224
@TM@ROZчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преодоление зависания во время выполнения цикла
@TM@ROZчегу меня возникла новая проблема. программа доволоьно долго присваивает 30000 символов переменной текстбоксу (Моё добавление - и виснет). это преодолимо? (Моё добавление - чтобы программа реагировала на что-либо. ДуЕвентс не подходит, потому что зависание вызвано работой одной строчки)
вот и весь вопрос
может быть меня неправильно поняли
...
Рейтинг: 0 / 0
02.07.2007, 16:35
    #34632805
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преодоление зависания во время выполнения цикла
Кстати, неясно: переменной или текстбоксу?
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Преодоление зависания во время выполнения цикла / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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