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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.11.2004, 10:19   #1  
sergy is offline
sergy
Участник
 
62 / 10 (1) +
Регистрация: 12.02.2004
Адрес: Воронеж
Выполнение запросов в отдельном потоке
Всем доброе утро!
Кто - нибудь знает почему не выполняются запросы при запуске отдельного потока

PHP код:
handlingMovement_Header = new Thread();
handlingMovement_Header.runclassnumHandlingMovement_Header ), IdentifierStrentryPoint ) ); 
Класс HandlingMovement_Header

PHP код:

static client void entryPointThread pThread ) {
HandlingMovement_Header   handlingMovement_Header;                

    
handlingMovement_Header = new HandlingMovement_Header();
    if ( 
handlingMovement_Header handlingMovement_Header.run();
}

void run() {

    
// сообщение выводится
    
print 'run';
    
pause;

    while 
select movement_Header_Select
                 where movement_Header_Select
.Approve == true {
        
// сообщение не выводится!!!
        
print 'select!!!';
        
pause;
    }

и главное как с этим боротся?!
Старый 26.11.2004, 10:33   #2  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Честно говоря не пробовал - при случае посмотрю, но боюсь, что все на так просто.
В вашем случае коннект к БД является разделяемым ресурсом для двух потоков, что требует дополнительных телодвижений при работе с ним.
Как полее простой варинат, можно попробовать создавать в потоке свой UserConnection и работать через него. Примерно так:

PHP код:
UserConncection connection = new UserConnection();
Table t;
;
t.setConncetion(connection); 
Старый 26.11.2004, 10:51   #3  
sergy is offline
sergy
Участник
 
62 / 10 (1) +
Регистрация: 12.02.2004
Адрес: Воронеж
Глубоко ему плевать на UserConnection!!! Не выполняется запрос и всё!
Возникает ощущение, что класс Thread очередная ЗАСАДА от MS
Старый 26.11.2004, 10:58   #4  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Попозже постараюсь посмотреть - раньше делал так и работало.
Но вероятность того, что Вам ответят здесь возрастет, если вы поясните:

Цитата:
Не выполняется запрос и всё!
- появляется ли какое-либо сообщение в Аксапте
- что говорит profiler
* по поводу данного запроса
* по поводу создания нового коннекта из отдельного потока
Старый 26.11.2004, 11:08   #5  
sergy is offline
sergy
Участник
 
62 / 10 (1) +
Регистрация: 12.02.2004
Адрес: Воронеж
Заменечо, что info( '...' ) в потоке не работает, вывести информацию можно только через print '...'; pause;. Система ни на что не ругется. Profiler в потоке не работает, т.е. попасть в нужное место и посмотреть значение переменных мне не удалось, что выполнение происходит до запроса определил через print '...'; pause;. Запрос самый простой на вывод всех строк из таблицы, таблица общая для виртуальной компании.
Старый 26.11.2004, 11:15   #6  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Я имел в виду Profiler от MS SQL. Или какое-нибудь средство трассировки запросов, если у кас Oracle - LogMinner, trace-файлы и т.д.
infolog() - связан с оконной процедурой основного окна(потока) Аксапты и вывод в него возможен только из этого потока. Точне говоря, скорее всего, возможен и из других потоков, но только в случае маршалинга указателя на него в другой поток.
Очень хорошо про потоки и работу с ними написано у Рихтера.
Старый 26.11.2004, 11:31   #7  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Только что проверил - знаешь - у меня и без этих манипуляций с отдельным коннектом все работает.
Я взял стандартный TutorialThread и в его метод runThread() добавил while select.
Старый 26.11.2004, 11:31   #8  
sergy is offline
sergy
Участник
 
62 / 10 (1) +
Регистрация: 12.02.2004
Адрес: Воронеж
Кстати про Profiler от MS SQL это мысль. Про потоки все понятно, читали, только поток в Axapta, на мой взгляд, должен иметь все те возможности как и главный поток Axapta, а если это не так, то зачем вообще его сделали? Чтобы 2 + 2 вычислять?
Старый 26.11.2004, 11:44   #9  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Re: Выполнение запросов в отдельном потоке
Цитата:
Изначально опубликовано sergy
Кто - нибудь знает почему не выполняются запросы при запуске отдельного потока
вероятно, что-то неправильно напрограммировано

см. класс SysEventHandler
Старый 26.11.2004, 11:46   #10  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
Про потоки все понятно, читали, только поток в Axapta, на мой взгляд, должен иметь все те возможности как и главный поток Axapta, а если это не так, то зачем вообще его сделали?
Эх. Значит не внимательно читали. У любого процесса, есть первичный поток, который создается в момент создания процесса, и есть дополнительные потоки, порожденные первичным.
И хотя потоки, работающие в контексте одного процесса, разделяют адресное пространство - в многопользовательском режиме надо предпринимать дополнительные усилия для их синхронизации - такие, как Interlocked-функции, критические секции и т.д. - глава 8 у Рихтера.
Старый 26.11.2004, 12:00   #11  
sergy is offline
sergy
Участник
 
62 / 10 (1) +
Регистрация: 12.02.2004
Адрес: Воронеж
А запросик - то действительно выполняется как с UserConnection, так и без это видно в Profiler. Про потоки все - таки понятно, но Axapta не имеет тех возможностей, что VC.
Класс SysEventHandler посмотрю, спасибо.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Просмотрщик запросов QueryBrowser DAX 3.0 SP4 Russland DAX: База знаний и проекты 30 11.03.2011 11:00
Отчет из нескольких запросов и их сохранение igorigor77 DAX: Программирование 2 11.12.2008 16:30
aEremenko: Использование прямых запросов SQL Blog bot DAX Blogs 4 18.07.2007 10:09
Выполнение джоба IT-specialist DAX: Программирование 1 06.10.2005 18:00
Использование формы запросов(SysQueryForm) Arsen DAX: Функционал 8 14.08.2003 17:12

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:51.