|   |   | 
| 
 | Регл. задание запускает фоновые задания. Как впоймать окончание. | ☑ | ||
|---|---|---|---|---|
| 0
    
        Eugeneer 07.09.22✎ 13:02 | 
        Скажем так есть регл задание которое запускает сразу множетсво фоновых заданий (т.е. все они запусскаются и выполняются одновременно).
 Как впоймать окончание всех этих заданий на сервере. Нужно короче когда все отработаются - еще кое что запустить по результату всех. | |||
| 1
    
        Serg_1960 07.09.22✎ 13:13 | 
        Вместе со всеми запустить твоё "завершающие" - у него в начале алгоритма ФоновыеЗадания.ОжидатьЗавершения(МассивЗапущенныхЗаданий);     | |||
| 2
    
        Eugeneer 07.09.22✎ 13:13 | 
        Не рекомендуется использовать, начиная с версии 8.3.13.     | |||
| 3
    
        kittystark 07.09.22✎ 13:14 | 
        можно завести массив/соответствие с гуидами запускаемых ФЗ
 на форму повесь обработчик ожидания и в нем бежишь по каждому, получаешь ФЗ, смотришь на Состояние | |||
| 4
    
        Eugeneer 07.09.22✎ 13:14 | 
        ОжидатьЗавершенияВыполнения     | |||
| 5
    
        Eugeneer 07.09.22✎ 13:15 | 
        (3) нет формы.     | |||
| 6
    
        kittystark 07.09.22✎ 13:16 | 
        ну тады в цикле с некоторой задержкой     | |||
| 7
    
        Eugeneer 07.09.22✎ 13:18 | 
        (4) делает
 ОжидатьЗавершенияВыполнения (WaitForExecutionCompletion) Синтаксис: ОжидатьЗавершенияВыполнения(<ФоновыеЗадания>, <Таймаут>) Параметры: <ФоновыеЗадания> (обязательный) Тип: Массив. Массив фоновых заданий, завершение которых требуется ожидать. <Таймаут> (необязательный) Тип: Число. Таймаут в секундах ожидания завершения заданий. Если таймаут не задан, ожидание будет длиться до завершения всех заданий, или до первого аварийного завершения задания. | |||
| 8
    
        Serg_1960 07.09.22✎ 13:21 | 
        (2) "не рекомендуется" не означает "запрещается". Впрочем, ок.
 (7) Ну а это чем тебе не нравится? | |||
| 9
    
        kittystark 07.09.22✎ 13:21 | 
        (7) что с аварией делать надо?
 если продолжать оставшиеся, тогда ОжидатьЗавершенияВыполнения не подойдет | |||
| 10
    
        Serg_1960 07.09.22✎ 13:27 | 
        (9) Всё равно подойдёт. Так или иначе, но завершение заданий всё равно нужно анализировать. Поэтому ожидание  - в цикле, пока есть что ожидать, а в случае чего - продолжение или прерывание.     | |||
| 11
    
        kittystark 07.09.22✎ 13:34 | 
        (10) так?
 пока ХотьОдноЖивоеФЗ() цикл ОжидатьЗавершенияВыполнения() конеццикла; | |||
| 12
    
        Serg_1960 07.09.22✎ 13:41 | 
        (11) После ОжидатьЗавершенияВыполнения() можно обойти массив заданий с анализом их состояния, попутно заново формируя массив заданий для ожидания... Как то вот так.     | |||
| 13
    
        Serg_1960 07.09.22✎ 13:45 | 
        Как вариант, можно при запуске заданий параметром передать им адрес хранилища, например, куда они будут сбрасывать результат работы. Тогда, после выхода из режима ожидания, можно анализировать не состояние, а эту информацию.     | |||
| 14
    
        kittystark 07.09.22✎ 14:01 | 
        (12) "обойти массив заданий с анализом их состояния" >
 короче, те же яйца... | |||
| 15
    
        kittystark 07.09.22✎ 14:07 | 
        (13) угу, или завести еще один регистр сведений, в него писать и из него опрашивать - ну чтоб дырку в винчестере быстрее сделать :)
 шутка! | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |