Гость
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Прерывание процесса. / 21 сообщений из 21, страница 1 из 1
13.07.2006, 16:15
    #33851624
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание процесса.
Имеется кнопочка "Старт" и кнопочка "Стоп". В "Старт" написан длинный код. Там куча UPDATEтов. Весь процесс занимает несколько минут. Нужно сделать так, чтобы, при нажатии на "Стоп", компьютер бы "вышел из скрипта", написанного в "Старт". Как это сделать? Хотя бы в общих чертах, плиизззз...
...
Рейтинг: 0 / 0
13.07.2006, 16:52
    #33851796
ИвановНН
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание процесса.
yield натыкать там где Старт и флажок проверять, который в Стоп взводится
...
Рейтинг: 0 / 0
13.07.2006, 17:07
    #33851872
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание процесса.
Я вынес скрипт из "Старт" в event Timer (тот же принцип, что и yield ). Но это не помогло. Нельзя нажать на кнопку, пока все процессы не завершатся. Сейчас попробую с yield.
...
Рейтинг: 0 / 0
13.07.2006, 17:40
    #33852007
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание процесса.
Во время Update в БД интерфейс по-любому будет замораживаться.
...
Рейтинг: 0 / 0
13.07.2006, 17:42
    #33852017
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание процесса.
ИвановННyield натыкать там где Старт и флажок проверять, который в Стоп взводится
не помогло :(
...
Рейтинг: 0 / 0
13.07.2006, 18:31
    #33852188
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание процесса.
...
Рейтинг: 0 / 0
13.07.2006, 18:42
    #33852217
ИвановНН
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание процесса.
Я имел ввиду следующее:
завести "instance" переменную boolean ib_is_stop
В скрипте "Старт":
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
ib_is_stop = false

update ...
yield()
if ib_is_stop then return

update ...
yield()
if ib_is_stop then return

update ...
yield()
if ib_is_stop then return
...
...
...
В "Стоп"
ib_is_stop = true

Вроде должно работать
...
Рейтинг: 0 / 0
13.07.2006, 18:44
    #33852221
ИвановНН
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание процесса.
Конечно, пока какой-нибудь update не закончится, выйти не получится
...
Рейтинг: 0 / 0
16.07.2006, 17:31
    #33856484
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание процесса.
ИвановННКонечно, пока какой-нибудь update не закончится, выйти не получится
По всей видимости выйти действительно не получается. Если процесс находится внутри UPDATE/SELECT, то нажать на кнопку нельзя физически, а между UPDATами нельзя практически (можно добавить между ними цикли с Yield, тогда можно будет остановить процесс, но в этом случае время выполнения скрипта значительно возрастает.
...
Рейтинг: 0 / 0
17.07.2006, 11:56
    #33857406
ИвановНН
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание процесса.
Можно тогда так попробовать:
сделать через shared object отдельный поток со своим коннектом
перед началом всех update вычислить connection-id этого коннекта (select connection_property('number')) в отдельном потоке (shared object)
передать connection-id в главный поток из shared object
начать делать update
после кождого update проверять SQLCode и если он не 0 то rollback - return
на кнопке stop при помощи еще одного коннекта (главного потока) сделать drop connection connection-id;
сам попробовал - работает
...
Рейтинг: 0 / 0
17.07.2006, 12:04
    #33857439
ИвановНН
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание процесса.
Прошу прощения - никаких rollback. Просто "ConnectString='...,CommitOnDisconnect=no,...'"
...
Рейтинг: 0 / 0
17.07.2006, 12:41
    #33857585
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание процесса.
Проблема в том, что нельзя нажать на "СТОП" в то время, пока выполняется Update.
...
Рейтинг: 0 / 0
17.07.2006, 13:39
    #33857792
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание процесса.
с шаред объектом можно
...
Рейтинг: 0 / 0
17.07.2006, 13:44
    #33857819
ИвановНН
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание процесса.
если update в одном потоке, а "Стоп" в другом, то "Стоп" нажать можно
при помощи Shared Object можно создать отдельный поток
...
Рейтинг: 0 / 0
17.07.2006, 14:04
    #33857921
ИвановНН
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание процесса.
Как-то так:
...
Рейтинг: 0 / 0
18.07.2006, 15:08
    #33861115
edmikeca
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание процесса.
ИвановННКак-то так:

Два вопроса: 1. Какой версией PB Вы пользовались? 2. Как и к какой DB подсоединялись ?
...
Рейтинг: 0 / 0
18.07.2006, 15:29
    #33861226
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание процесса.
edmikeca ИвановННКак-то так:

Два вопроса: 1. Какой версией PB Вы пользовались? 2. Как и к какой DB подсоединялись ?
PB 6.5, MSSQL2000
...
Рейтинг: 0 / 0
18.07.2006, 15:41
    #33861285
edmikeca
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание процесса.
Извиняюсь, но вопрос был к ИвановуНН.
...
Рейтинг: 0 / 0
18.07.2006, 16:46
    #33861597
_Danila_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание процесса.
Всем привет!

Извиняюсь что вмешиваюсь ...
но по опыту борьбы с SharedObject
могу посоветовать:
если у Вас PB 6 (6.5) не важно главное что ниже 7, то можно делать DLL
А если PB 7,8,9 (10-ку не проверяли), то ТОЛЬКО PBD!!!

WBR
A.Danilov
...
Рейтинг: 0 / 0
19.07.2006, 10:55
    #33863061
ИвановНН
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание процесса.
PB 9.0.1.7275
ASA 8.0.2.4476
...
Рейтинг: 0 / 0
19.07.2006, 14:44
    #33864089
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прерывание процесса.
_Danila_Извиняюсь что вмешиваюсь ...
но по опыту борьбы с SharedObject
могу посоветовать:
если у Вас PB 6 (6.5) не важно главное что ниже 7, то можно делать DLL
А если PB 7,8,9 (10-ку не проверяли), то ТОЛЬКО PBD!!!

Скажу честно (С)ВВП - я советую ни при каких обстоятельствах и версиях PB не использовать сборку в DLL.
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Прерывание процесса. / 21 сообщений из 21, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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