|
Как сделать не жрущую процессор паузу средствами платформы 1С (без Новый COMОбъект)? | ☑ | ||
---|---|---|---|---|
0
ptiz
27.01.22
✎
16:10
|
Как сделать не жрущую процессор паузу средствами платформы 1С ?
У меня до 100 фоновых заданий, которым одновременно нужна разной длительности пауза, и в таких случаях с паузами через COMОбъект идут глюки - меньшая пауза может отработать дольше чем надо. Пробовал вот эти методы, они дают паузу и не глючат, но жрут процессор точно так же как цикл: Новый FTPСоединение(, , , , , ЦелыхСекунд) Новый HTTPСоединение(, , , , , ЦелыхСекунд) Есть решение? |
|||
1
ДенисЧ
27.01.22
✎
16:13
|
1с паузу так и не сделало.
|
|||
2
ptiz
27.01.22
✎
16:13
|
(1) Угу. И воспроизведения звуков нет.
|
|||
3
pechkin
27.01.22
✎
16:14
|
для рег заданий делай паузу на расписании.
Типа повторять чрез n секунд |
|||
4
pechkin
27.01.22
✎
16:15
|
кстати можно же через ожидание фонового сделать
|
|||
5
ptiz
27.01.22
✎
16:17
|
(3) Упрощенно: эти 100 фоновых конкурируют за общий ресурс, интервалы должны быть не меньше допустимых, но минимальными.
|
|||
6
Guk
27.01.22
✎
16:21
|
(2) СредстваМультимедиа (MultimediaTools)
ВоспроизвестиАудио (PlayAudio) Синтаксис: ВоспроизвестиАудио(<Аудио>, <НачальнаяПозиция>, <ОбработчикОстановкиВоспроизведения>, <РазрешитьФоновое>) |
|||
7
ДенисЧ
27.01.22
✎
16:23
|
(6) Доступность:
Мобильный клиент, мобильное приложение (клиент). |
|||
8
Kassern
27.01.22
✎
16:25
|
(0) читали это? https://infostart.ru/1c/articles/1158171/
|
|||
9
asady
27.01.22
✎
16:26
|
(0) делай полноценный асинхрон
зачем тебе эти паузы нужна проверка доступен запуск - недоступен типа проверки флагов если недоступен флаг выход из задания в следующем запуске заново проверяй |
|||
10
Garykom
гуру
27.01.22
✎
16:27
|
(0) Никак.
Перепиши свой "алгоритм" без пауз |
|||
11
Kassern
27.01.22
✎
16:27
|
а вообще есть ОбщегоНазначенияБТС.Пауза(Секунд);
|
|||
12
nicxxx
27.01.22
✎
16:28
|
(0) Вам сюда
https://infostart.ru/1c/articles/1214070/ |
|||
13
Garykom
гуру
27.01.22
✎
16:28
|
(5) добавь еще одно фоновое которое и будет распределять ресурс, запуская нужные фоновые
|
|||
14
Guk
27.01.22
✎
16:29
|
(7) но сделали же!!!...
|
|||
15
ptiz
27.01.22
✎
16:31
|
(8) Спасибо. Читаю.
|
|||
16
Kassern
27.01.22
✎
16:32
|
Процедура Пауза(Секунд) Экспорт
ТекущийСеансИнформационнойБазы = ПолучитьТекущийСеансИнформационнойБазы(); ФоновоеЗадание = ТекущийСеансИнформационнойБазы.ПолучитьФоновоеЗадание(); Если ФоновоеЗадание = Неопределено Тогда Параметры = Новый Массив; Параметры.Добавить(Секунд); ФоновоеЗадание = ФоновыеЗадания.Выполнить("ОбщегоНазначенияБТС.Пауза", Параметры); КонецЕсли; Попытка ФоновоеЗадание.ОжидатьЗавершения(Секунд); Исключение Возврат; КонецПопытки; КонецПроцедуры |
|||
17
ptiz
27.01.22
✎
16:33
|
(16) Да, похоже то, что надо. И вроде давно как-то читал, забыл.
|
|||
18
ptiz
27.01.22
✎
16:35
|
(16) а.... это в типовых уже. Раньше были только костыли.
|
|||
19
Kassern
27.01.22
✎
16:36
|
(18) именно, иногда полезно в бсп глянуть
|
|||
20
ptiz
27.01.22
✎
16:47
|
(19) Вот я и взял когда-то из типовой, там жуть, особенно учитывая кол-во кода в ОбщегоНазначенияКлиентСервер.ЗапуститьПрограмму! :)
Процедура Таймаут(Миллисекунды = 1000) НачалоЗамера = ТекущаяУниверсальнаяДатаВМиллисекундах(); Параметры = ОбщегоНазначенияКлиентСервер.ПараметрыЗапускаПрограммы(); Параметры.ДождатьсяЗавершения = Истина; ОбщегоНазначенияКлиентСервер.ЗапуститьПрограмму(СтрШаблон("ping -n 1 -w %1 127.255.255.255", Формат(Миллисекунды, "ЧДЦ=0; ЧГ=")), Параметры); Пока (ТекущаяУниверсальнаяДатаВМиллисекундах() - НачалоЗамера) < Миллисекунды Цикл // Если нужное время не прошло, оставшееся время дождемся в цикле. КонецЦикла; КонецПроцедуры |
|||
21
youalex
27.01.22
✎
16:52
|
(2) А как же повсеместно используемый Сигнал() ? ))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |