Как можно передать в другой поток (запускаемый через START) ссылку на локальную очередь? Что-то вроде:
Код: Выделить всё
MyQueue QUEUE,TYPE
…….
END
Func1 PROCEDURE()
Func1LocalQueue MyQueue
StrQueueRef STRING(20)
CODE
StrQueueRef = GetQueueReference(Func1LocalQueue)
START(Func2, , StrQueueRef)
Func2 PROCEDURE(STRING StrQueueRef)
Func2RefQueue &MyQueue
CODE
SetQueueReference(Func2RefQueue, StrQueueRef)
Павел Яковенко
(Добавление)
Примерно так, про открытия окон я упустил, думаю понятно
Код: Выделить всё
map
Proc1
Proc2(string)
end
Proc1 procedure
loc_Queue Queue
Fiedl1 string(20)
end
code
START(Proc2,25000,(ADDRESS(loc_Queue)))
Proc2 procedure(string Handle)
loc_Queue &Queue
CODE
loc_Queue &= (Handle)
Andrew Myalin
andrew@arsis.ru
http://mavcla.arsis.ru (MAV Direct ODBC)
Yahoo group: clarion@yahoogroups.com
Компилятор такой код пропускает, но получаем стабильный GPF при работе с очередью в процедуре Proc2
Проверял в C5 и С55 (все патчи последние)
Павел Яковенко
(Добавление)
Для очереди не делал, но для класса см. мой пример Loader у Евгения
Стефаненко,далее по аналогии:
Код: Выделить всё
MAP
UserProc PROCEDURE(STRING Param)
END
MyQueue QUEUE,TYPE
...
END
TrGroup
RefMyQue &MyQueue
END
CODE
...
START(UserProc,,TrGroup)
!----------------------------------------------------
! Процедура пользователя
!----------------------------------------------------
UserProc PROCEDURE(STRING Param)
L:TrGroup
RefMyQue &MyQueue
END
CODE
L:TrGroup = Param
Best regards,
Селин_К.Е. mailto:kada@adm.kaluga.ru
(Добавление)
Прикольно, действительно работает.
Спасибо.
Павел Яковенко
Написал: ClaList(2)