powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Помогите с проблемкой
7 сообщений из 7, страница 1 из 1
Помогите с проблемкой
    #32509810
Timis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создается non visual object на считывание с ком порта….
В котором стартует процедура
star()

ib_runing = true //выполняется считывание
do until ib_stop //пока не скажут остановится

считывание

yield()
loop

ib_runing = true //считывание закончено

при разрушении:
ib_stop = true //остановить выполнение

do while ib_runing //пока считывание не завершено передаю управление
yield()
loop
программа вешается

PS: заранее благодарен за помощь
...
Рейтинг: 0 / 0
Помогите с проблемкой
    #32509824
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первое соображение:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
star() 
…
ib_runing = true //выполняется считывание
do until ib_stop //пока не скажут остановится
…
считывание
…
yield()
loop

//ib_runing = true //считывание закончено
// строчкой выше скорее всего д.б. 
ib_runing = FALSE
Второе соображение - телепатов тут совсем не осталось :-( Поэтому уточните:
Что есть при разрушении ? Код написан в деструкторе объекта?
В процедуре star() выполняется DESTROY this ? Если нет, то какие есть основания считать, что деструктор когда-либо выполнится?
...
Рейтинг: 0 / 0
Помогите с проблемкой
    #32509832
Timis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
извини действительно ib_runing = false в конце
так оно в программе и стоит
DESTROY
вызывается из внешнего класа (n_ves)... просто при Destroy получается так, что утравление не передается на Start и как следдствие не выгружается из памяти ( как мне кажится).... я просто не сильна давно в программировании..
а вопрос весь в чем:
как передать управление?
ПС: спасибо PL99
...
Рейтинг: 0 / 0
Помогите с проблемкой
    #32509840
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
//declare instance variable
boolean ib_Stop=TRUE

Код: plaintext
1.
2.
3.
4.
5.
6.
// button clicked event
ib_Stop = not ib_Stop
do until ib_Stop//пока не скажут остановится
  sle_1.text = string(long(sle_1.text) +  1 )
  yield()
  if long(sle_1.text) >  100000  then exit // чисто для гарантии от зависаний :-)
loop

Проверено на PB EE 6.5.1/Win2000Prof Eng
...
Рейтинг: 0 / 0
Помогите с проблемкой
    #32510198
Timis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
смысл: создается поток для считывание с порта (в примери упрашено и просто увиличивает число с интервалом 500 милесекунд)
который нужно прекратить только при закрытии окна!
...
Рейтинг: 0 / 0
Помогите с проблемкой
    #32510478
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно. Зависал деструктор. Вот так сделай, все должно заработать
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
// function start()
do while true //выполнять всегда 
	debugbreak()
	il_count ++
	in_parent.triggerevent("count_change")
	//полезная работа
	sleep( 500 )
	yield()
	if ib_stop then exit // выходим!
loop
return  1 

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
// destructor event
ib_stop=true
 /*
if ib_is_work then 
	ib_stop = true
	do while ib_is_work
		yield()
	loop
end if
*/ 
Проверено на PB EE 6.5.1/Win2000Prof Eng

А теперь вопрос - зачем нужно городить весь огород с потоками?
...
Рейтинг: 0 / 0
Помогите с проблемкой
    #32510513
Timis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо помогло! :-)))
...
А весь этот огород:
Есть устройство, подключенное к COM которое в свою очеридь постояно передает информацию (которую ссответсвенно надо считывать).
Первоночально задача реализовывалась через передачу управления [yield()]. Этот не хитрый моневр седалвсе свободное время проца. а через поток проц практически не напригается!...
Еще раз огромное спасибо за помощь!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Помогите с проблемкой
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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