powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Отображение процесса загрузки
6 сообщений из 6, страница 1 из 1
Отображение процесса загрузки
    #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
Отображение процесса загрузки
    #33549901
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После каждой команды

o_start.Term1.Procent1()

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

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

o_start.Term1.Procent1()

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

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

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

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

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

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

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

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


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