Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Отображение процесса загрузки / 6 сообщений из 6, страница 1 из 1
16.02.2006, 16:59
    #33549850
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отображение процесса загрузки
В стартовом файле загружаются RV как с SQL-сервера, так и из Access-таблиц. Процесс этот затрачивает время и складывается ситуация, что программа виснет. Но это же не так. Поэтому решил создать класс на базе формы, куда положил термометр (отображает процентный процесс загрузки) и Label (показывает какая таблица загружается). На тестовом примере все идет как надо:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SET CLASSLIB TO gb_lib ADDITIVE
LOCAL o_start as Form
o_start =CREATEOBJECT("Start")
o_start.Term1.Shp_full.Width =  0 
o_start.Term1.Procent1()
o_start.Show( 0 )

o_start.Lbl_comment.Caption = "TERR_SPR"
m.n12 =  10000 
FOR i =  1  TO  10000 
  o_start.Term1.Shp_full.Width = i*o_start.Term1.Width* 1 . 0 /m.n12
  o_start.Term1.Procent1()
ENDFOR
RELEASE o_start
RELEASE CLASSLIB gb_lib
Но когда начинаю работать со стартовым файлом (фрагмент из него):
Код: 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.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
...
OPEN DATABASE Gb

SET CLASSLIB TO gb_lib ADDITIVE
LOCAL o_start as Form
o_start =CREATEOBJECT("Start")
o_start.Term1.Shp_full.Width =  0 
o_start.Term1.Procent1()
o_start.Show( 0 )

o_start.Lbl_comment.Caption = "TERR_SPR"
USE Rv_terr_spr IN  0 
o_start.Term1.Shp_full.Width =  1 . 0 *o_start.Term1.Width/ 11 
o_start.Term1.Procent1()

o_start.Lbl_comment.Caption = "EC_INDICATORS_SPR"
USE Rv_ec_indicators_spr IN  0 
o_start.Term1.Shp_full.Width =  2 . 0 *o_start.Term1.Width/ 11 
o_start.Term1.Procent1()

o_start.Lbl_comment.Caption = "ANNWDDATA"
USE Rv_annwddata IN  0 
o_start.Term1.Shp_full.Width =  3 . 0 *o_start.Term1.Width/ 11 
o_start.Term1.Procent1()

o_start.Lbl_comment.Caption = "IISDATA"
USE Rv_iisdata IN  0 
o_start.Term1.Shp_full.Width =  4 . 0 *o_start.Term1.Width/ 11 
o_start.Term1.Procent1()

o_start.Lbl_comment.Caption = "UKREGDATA"
USE Rv_ukregdata IN  0 
o_start.Term1.Shp_full.Width =  5 . 0 *o_start.Term1.Width/ 11 
o_start.Term1.Procent1()

o_start.Lbl_comment.Caption = "WTTCDATA"
USE Rv_wttcdata IN  0 
o_start.Term1.Shp_full.Width =  6 . 0 *o_start.Term1.Width/ 11 
o_start.Term1.Procent1()

o_start.Lbl_comment.Caption = "RXDUSA"
USE Rv_rxdusa IN  0 
o_start.Term1.Shp_full.Width =  7 . 0 *o_start.Term1.Width/ 11 
o_start.Term1.Procent1()

o_start.Lbl_comment.Caption = "SCHNEIDERDATA"
USE Rv_schneiderdata IN  0 
o_start.Term1.Shp_full.Width =  8 . 0 *o_start.Term1.Width/ 11 
o_start.Term1.Procent1()

o_start.Lbl_comment.Caption = "SOCDATA"
USE Rv_socdata IN  0 
o_start.Term1.Shp_full.Width =  9 . 0 *o_start.Term1.Width/ 11 
o_start.Term1.Procent1()

o_start.Lbl_comment.Caption = "UKCSDATA"
USE Rv_ukcsdata IN  0 
o_start.Term1.Shp_full.Width =  10 . 0 *o_start.Term1.Width/ 11 
o_start.Term1.Procent1()

o_start.Lbl_comment.Caption = "WDDATA"
USE Rv_wddata IN  0 
o_start.Term1.Shp_full.Width =  11 . 0 *o_start.Term1.Width/ 11 
o_start.Term1.Procent1()

RELEASE o_start
...
Стартовая форма показывается, но процесс не отображается. Потом форма пропадает и продолжается работа. Но мне надо бы показать процесс загрузки. Может я что-то не так делаю???
...
Рейтинг: 0 / 0
16.02.2006, 17:13
    #33549901
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отображение процесса загрузки
После каждой команды

o_start.Term1.Procent1()

добавь команду

DOEVENTS
...
Рейтинг: 0 / 0
17.02.2006, 07:33
    #33550778
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отображение процесса загрузки
ВладимирМПосле каждой команды

o_start.Term1.Procent1()

добавь команду

DOEVENTS
Спасибо ВладимирМ! Причем оказалось не просто
Код: plaintext
DOEVENTS
а
Код: plaintext
DOEVENTS FORCE
...
Рейтинг: 0 / 0
19.02.2006, 07:44
    #33554276
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отображение процесса загрузки
А меня все таки заинтересовал вопрос: "Почему VFP без команды
Код: plaintext
DOEVENTS FORCE
неотображает процесс загрузки? Что ему мешает или наоборот происходит, что VFP неуспевает отобразить?" Ведь в тестовом примере происходит процесс отображения.
...
Рейтинг: 0 / 0
19.02.2006, 12:48
    #33554357
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отображение процесса загрузки
Именно что "не успевает отобразить".

Т.е. сам процесс приращения "термометра" происходит как положено. Все числовые значения присваиваются. Но, после присвоения значения необходимо еще выполнить обновление "картинки".

Вот тут-то и происходит "засада". Обновление картинки - это отдельный процесс, который ставится, как и все процессы, в некоторую "очередь процессов". Другими словами, выполняется не сразу, в момент подачи команды на обновление картинки, а только после того, как до нее дойдет очередь. Выполняться все те процессы, которые стоят перед ней в списке процессов.

Судя по всему, процесс обновления происходит не сразу, а с некоторой временнОй задержкой. Точнее, в тот момент, когда система переходит в режим ожидания действий пользователя.

Получается такая последовательность выполнения процессов:

Выполняются все функции открытия таблиц. После чего выполняются накопленные процессы обновления картинки.

DOEVENTS как раз и призвана "поломать" штатный механизм распределения заданий в очереди и "пропихнуть" все те процессы, которые есть сейчас в стеке событий.
...
Рейтинг: 0 / 0
19.02.2006, 13:16
    #33554379
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отображение процесса загрузки
ВладимирМ ! Большое спасибо за разъяснение. Извините, что спрашиваю может быть глуппые вопросы.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Отображение процесса загрузки / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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