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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.12.2017, 23:37   #15  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
Сообщение от Rardd Посмотреть сообщение
Извините за задержку с ответом. Задача в следующем:
Есть сущность которую нужно выгружать, и есть ситуация когда эта сущность настолько велика, что ее формирование это десятки часов (система достаточно мощная). И задача была в том, что бы разбить выгрузку этой сущности на потоки что бы снизить общее время ее генерации так как есть записи которые выгружаются 10 секунд, а есть записи которые выгружаются 10 минут, и пришли к выводу что нужно разбить выгрузку на задачи (потоки). Каждый поток записывает резульатат в таблицу (единственный выход синхронизации потоков). Потом, когда все потоки отработали, идем в таблицу и создаем из записей json, который с помощью Custom Service можна забрать. Вот собственно и все
Вам идеально подходит Batch в режиме multithread http://www.artofcreation.be/2010/10/...ultithreading/ лучше для задачи не придумаешь. BatchJob будет сплититься на потоки, один из которых master, после того как все остальные отработают будет осуществлять выгрузку. Из преимуществ - в случае «пропало электричество» продолжит свою работу + логи, регулирование количества потоков, повтор в случае отказа, нотификация по завершению и т.д. Одним словом - все плюшки батча.

Про Threads: у меня сложилось впечатление, что в силу неумения правильно готовить этот класс, просто советуют его не использовать. Его сложно отлаживать, нужно засинкать потоки, оптимизировать их количество, корректно вернуть результат из потока + вероятно вернуть infolog и т.д. Все это нетипичное для повседневных задач программирование, отсюда его не любят. Однако, работу он свою выполняет корректно, без мифических глюков и не раз выручал. В CIL он действительно не работает, но и не очень-то нужно. Threads больше подходит для интерактивных задач.
Но для вашей задачи лучше использовать Batch это будет и проще и отказоустойчивое.
За это сообщение автора поблагодарили: user_ax (2), Sergey Petrov (1).
Теги
async, ax2012, ax7, cil, d365 for operations, lock, thread

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
AX2012R3: полная синхронизация данных POS-магазина PTG DAX: Функционал 10 22.06.2016 17:43
Синхронизация SP4 -> SP5 Logger DAX: Программирование 4 09.08.2006 13:10
навязчивая синхронизация Антон Солдатов DAX: Функционал 11 22.04.2005 11:04
Репликация и синхронизация Tays DAX: Администрирование 12 24.11.2004 12:18
синхронизация с outlook alpine DAX: Функционал 7 09.06.2004 13:53

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

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

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