AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.03.2016, 11:08   #41  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,430 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от vikuss2006 Посмотреть сообщение
Выдало Информация 0
выше я еже приводил ссылку Вывести сообщение сгенерированное в отдельном потоке (thread) в окно инфо?
Цитата:
Сообщение от Perc Посмотреть сообщение
После thread.run(, нужно было вставить ожидание thread.waitUntilSignaled(); А то получалось соответственно, что заполнял инфолог позже того как пытался посмотреть в нем данные.
Старый 23.03.2016, 11:14   #42  
terraByteG is offline
terraByteG
Участник
 
15 / 17 (1) ++
Регистрация: 10.03.2016
vikuss2006 Странно. Должно работать. AX 2009 отрабатывает.
Про точку останова - глюк. Breakpoint в помощь... Только учтите, что основное приложение поток с таким кодом ждать не будет... Тут надо использовать waitUntilSignaled.
Старый 24.03.2016, 13:30   #43  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,658 / 1162 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
X++:
class FCH_ThreadDemo
{
}

static client void main(Args args)
{
    Thread      thread;
    ;

    thread = new Thread();
    //thread.setInputParm([...]);           // Передать параметры в контейнере, если необходимо
    thread.removeOnComplete(true);          // По завершении работы выгрузить поток
    
    thread.run(classnum(FCH_ThreadDemo), staticmethodstr(FCH_ThreadDemo, run));     // Выполнение
    
    thread.waitUntilSignaled();             // Ожидаем получение ответа из потока
    infolog.import(thread.getOutputParm()); // Выводит в инфолог полученный выходной параметр
}

static client void run(Thread _thread)
{
    container   packedArgs;
    ;
    
    //Получение параметров, переданных в потоке
    //packedArgs = _thread.getInputParm(); 
 
    // Выполнение метода обычными командами Axapta
    info('Hello');

    // Последней командой метода, скопировать infolog в выходной параметр потока
    _thread.setOutputParm(infolog.copy(1,infolog.num()));   
}
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 25.03.2016, 12:56   #44  
vikuss2006 is offline
vikuss2006
Участник
 
42 / 10 (1) +
Регистрация: 22.11.2013
У меня Аксапта 2003 года, так что наверное, не будет работать
Старый 25.03.2016, 14:14   #45  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
870 / 637 (23) +++++++
Регистрация: 14.10.2004
Попробуйте вернуться к идее vb-скрипта. Заставьте разработчиков прислать вам пример, который работает на vb-скрипте. Пусть vb-скрипт записывает результаты своей работы в текстовый файл.
Таким способом вы избежите особенностей Аксапты. И у вас будет больше козырей при общении с разработчиками этой приблуды.
Даже такая сложная программа, как 1С, позволяет вызывать свои обработки через vb-скрипт.
Старый 25.03.2016, 14:36   #46  
vikuss2006 is offline
vikuss2006
Участник
 
42 / 10 (1) +
Регистрация: 22.11.2013
t.waitUntilSignaled() - Класс Thread не содержит эту функцию.
Старый 25.03.2016, 15:44   #47  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,430 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от vikuss2006 Посмотреть сообщение
t.waitUntilSignaled() - Класс Thread не содержит эту функцию.
Тогда в родительском потоке в цикле опрашивать статус дочернего, пока не выполниться.
Метод thread.status есть?

X++:
thread = new Thread();
thread.run(classnum(FCH_ThreadDemo), staticmethodstr(FCH_ThreadDemo, run));

while (thread.status() != 2)
{
   sleep(500);
}
[result] = thread.getOutputParm();

Последний раз редактировалось S.Kuskov; 25.03.2016 в 15:46.
Старый 25.03.2016, 16:43   #48  
terraByteG is offline
terraByteG
Участник
 
15 / 17 (1) ++
Регистрация: 10.03.2016
S.Kuskov
Статус 3 (ошибка) повесит программу.

X++:
thread = new Thread();
thread.run(classnum(FCH_ThreadDemo), staticmethodstr(FCH_ThreadDemo, run));

while (thread.status() == 1) //fixed
{
   sleep(500);
}
[result] = thread.getOutputParm();
За это сообщение автора поблагодарили: S.Kuskov (5).
Старый 28.03.2016, 12:13   #49  
vikuss2006 is offline
vikuss2006
Участник
 
42 / 10 (1) +
Регистрация: 22.11.2013
Цитата:
Сообщение от terraByteG Посмотреть сообщение
S.Kuskov
Статус 3 (ошибка) повесит программу.

X++:
thread = new Thread();
thread.run(classnum(FCH_ThreadDemo), staticmethodstr(FCH_ThreadDemo, run));

while (thread.status() == 1) //fixed
{
   sleep(500);
}
[result] = thread.getOutputParm();
Система просто Повисла!!!
Старый 28.03.2016, 12:21   #50  
vikuss2006 is offline
vikuss2006
Участник
 
42 / 10 (1) +
Регистрация: 22.11.2013
Никак не получается устранить ошибку Object 'FormRun' could not be created
Старый 29.03.2016, 16:28   #51  
terraByteG is offline
terraByteG
Участник
 
15 / 17 (1) ++
Регистрация: 10.03.2016
Цитата:
Сообщение от vikuss2006 Посмотреть сообщение
Система просто Повисла!!!
Если повисла - значит поток все еще работает. Код в потоке какой у вас? Можно код класса предоставить (в котором методы потока обитают)... Можно экспорт сделать и файлик сюда.
Старый 30.03.2016, 08:14   #52  
vikuss2006 is offline
vikuss2006
Участник
 
42 / 10 (1) +
Регистрация: 22.11.2013
Цитата:
Сообщение от terraByteG Посмотреть сообщение
Если повисла - значит поток все еще работает. Код в потоке какой у вас? Можно код класса предоставить (в котором методы потока обитают)... Можно экспорт сделать и файлик сюда.
Система висит не из-за обработки, а из-за ошибки, которая никак не устраняется "Object 'FormRun' could not be created", запускала агент ничего не дало.
Код остался такой же, только с примененными советами

class FCH_ThreadDemo
{
}
static client void main()
{
Thread t;
container result;
;
t = new Thread();
t.run(classnum(FCH_ThreadDemo), staticmethodstr(FCH_ThreadDemo, run));

while (t.status() == 1) //fixed
{
sleep(500);
}
[result] = t.getOutputParm();
info(conpeek(result,1));
}
static client void run(Thread t)
{
t.setOutputParm(['Hello']);
}
Вызов
FCH_ThreadDemo::main();
Старый 30.03.2016, 08:47   #53  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от vikuss2006 Посмотреть сообщение
Система висит не из-за обработки, а из-за ошибки, которая никак не устраняется "Object 'FormRun' could not be created", запускала агент ничего не дало.
Гиблое это дело, работать с потоками в 3.0. Насколько я знаю, они никогда нормально не работали. Если очень надо, лучше используйте setTimeOut на форме.
Старый 30.03.2016, 14:41   #54  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,658 / 1162 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Lucky13 Посмотреть сообщение
Если очень надо, лучше используйте setTimeOut на форме.
Не на форме. Предположительно, в глобальном кеше.

Нужен объект, который после инициализации и создания экземпляра Com будет существовать до закрытия Axapta.

Не знаю, был ли уже в Ax3.0 \Classes\ClassFactory\globalCache()? Если был, то посмотрите по перекрестным ссылкам примеры использования. Вероятно, проще всего, будет в глобальный кеш засунуть экземпляр класса.

Если экземпляр класса в глобальном кеше будет "простаивать" (в смысле, приведет к выгрузке COM из памяти по причине "не использования"), то организовать периодическое "передергивание" по setTimeOut через метод класса \Classes\Info\executeUserOptions()

Хотя, конечно, это уже "костыли" от безысходности...
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 30.03.2016, 14:43   #55  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,658 / 1162 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от vikuss2006 Посмотреть сообщение
Система висит не из-за обработки, а из-за ошибки, которая никак не устраняется "Object 'FormRun' could not be created", запускала агент ничего не дало.
На какой команде-то эта ошибка возникает?
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 30.03.2016, 15:33   #56  
vikuss2006 is offline
vikuss2006
Участник
 
42 / 10 (1) +
Регистрация: 22.11.2013
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
На какой команде-то эта ошибка возникает?
сразу на t.run(
Старый 30.03.2016, 16:05   #57  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Не на форме. Предположительно, в глобальном кеше.

Не знаю, был ли уже в Ax3.0 \Classes\ClassFactory\globalCache()? Если был, то посмотрите по перекрестным ссылкам примеры использования. Вероятно, проще всего, будет в глобальный кеш засунуть экземпляр класса.
Можно и в глобальном кэше, в 3.0 он есть.
Старый 30.03.2016, 17:50   #58  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,658 / 1162 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от vikuss2006 Посмотреть сообщение
сразу на t.run(
X++:
static client void run(Thread t)
{
   ;   // Поставьте в начале метода "пустую" точку с запятой
   t.setOutputParm(['Hello']);
}
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Теги
com connector, com-объект, thread

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axmfg: Lean manufacturing: Picking activities and kanban line events Blog bot DAX Blogs 0 26.08.2014 21:13
atinkerersnotebook: Using Vendor Requests to Manage On-boarding New Vendors Blog bot DAX Blogs 1 22.10.2013 02:24
atinkerersnotebook: Using Service Management to Track Service Orders Blog bot DAX Blogs 1 25.08.2013 19:16
atinkerersnotebook: Configuring Lean Manufacturing in Dynamics AX 2012 Blog bot DAX Blogs 1 12.08.2013 00:15
dynamicsaxtraining: Vendor returns Blog bot DAX Blogs 0 11.10.2012 00:11

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 11:13.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.