powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Прерывание процесса.
21 сообщений из 21, страница 1 из 1
Прерывание процесса.
    #33851624
Фотография Riska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется кнопочка "Старт" и кнопочка "Стоп". В "Старт" написан длинный код. Там куча UPDATEтов. Весь процесс занимает несколько минут. Нужно сделать так, чтобы, при нажатии на "Стоп", компьютер бы "вышел из скрипта", написанного в "Старт". Как это сделать? Хотя бы в общих чертах, плиизззз...
...
Рейтинг: 0 / 0
Прерывание процесса.
    #33851796
Фотография ИвановНН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yield натыкать там где Старт и флажок проверять, который в Стоп взводится
...
Рейтинг: 0 / 0
Прерывание процесса.
    #33851872
Фотография Riska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вынес скрипт из "Старт" в event Timer (тот же принцип, что и yield ). Но это не помогло. Нельзя нажать на кнопку, пока все процессы не завершатся. Сейчас попробую с yield.
...
Рейтинг: 0 / 0
Прерывание процесса.
    #33852007
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во время Update в БД интерфейс по-любому будет замораживаться.
...
Рейтинг: 0 / 0
Прерывание процесса.
    #33852017
Фотография Riska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИвановННyield натыкать там где Старт и флажок проверять, который в Стоп взводится
не помогло :(
...
Рейтинг: 0 / 0
Прерывание процесса.
    #33852188
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Прерывание процесса.
    #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
Прерывание процесса.
    #33852221
Фотография ИвановНН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно, пока какой-нибудь update не закончится, выйти не получится
...
Рейтинг: 0 / 0
Прерывание процесса.
    #33856484
Фотография Riska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИвановННКонечно, пока какой-нибудь update не закончится, выйти не получится
По всей видимости выйти действительно не получается. Если процесс находится внутри UPDATE/SELECT, то нажать на кнопку нельзя физически, а между UPDATами нельзя практически (можно добавить между ними цикли с Yield, тогда можно будет остановить процесс, но в этом случае время выполнения скрипта значительно возрастает.
...
Рейтинг: 0 / 0
Прерывание процесса.
    #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
Прерывание процесса.
    #33857439
Фотография ИвановНН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощения - никаких rollback. Просто "ConnectString='...,CommitOnDisconnect=no,...'"
...
Рейтинг: 0 / 0
Прерывание процесса.
    #33857585
Фотография Riska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема в том, что нельзя нажать на "СТОП" в то время, пока выполняется Update.
...
Рейтинг: 0 / 0
Прерывание процесса.
    #33857792
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с шаред объектом можно
...
Рейтинг: 0 / 0
Прерывание процесса.
    #33857819
Фотография ИвановНН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если update в одном потоке, а "Стоп" в другом, то "Стоп" нажать можно
при помощи Shared Object можно создать отдельный поток
...
Рейтинг: 0 / 0
Прерывание процесса.
    #33857921
Фотография ИвановНН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то так:
...
Рейтинг: 0 / 0
Прерывание процесса.
    #33861115
edmikeca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИвановННКак-то так:

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

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

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

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

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


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