Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 02:53

асинх не работает

Автор v0Hijm, 07 мар 2024, 10:10

0 Пользователей и 1 гость просматривают эту тему.

v0Hijm

при запуске функций с бесконечным циклом все виснет, не смотря на то что функция не в основном патоке.
в примере ниже функция в основном потоке висит секунд 5.
&НаКлиенте
асинх функция функ()
   перем x;
   x=1 ;                                   
   while x<1000000 цикл ;
   x=x+1;
   конеццикла ;
   сообщить(x);
   return x
КонецФункции

LexaK

v0Hijm, это читали?
ЦитироватьМодификатор применим только к функции, выполняемой на клиенте. Позволяет указать, что функция является асинхронной. Асинхронная функция всегда возвращает объект типа Обещание. Асинхронная функция выполняется синхронно до первого оператора Ждать. После этого функция возвращает значение типа Обещание, и управление передается вызывающей стороне. Дальнейшее исполнение текущей функции происходит асинхронно. Когда результат получен, Обещание наполняется полученным значением. Если функция выбрасывает исключение, оно может быть перехвачено вызывающей стороной.
Параметры асинхронных функций передаются только по значению (неявно подставляется Знач).

попробуйте перед циклом вставьте оператор Ждать...
если помогло нажмите: Спасибо!

v0Hijm

LexaK,
 :dfbsdfbsdf:
&НаКлиенте
асинх Процедура Команда1(Команда)
    ждать проц();
КонецПроцедуры

функция проц()
    пока истина цикл
    конеццикла; 
конецфункции

как бы я не пытался это реализовать, всё равно все идет в основной поток и виснет виснет

antoneus

Так вы функцию вызываете после "ждать".

v0Hijm

antoneus, а что мне в таком случае надо передать в ждать?
   

Максим75

v0Hijm, если используется конструкция Ждать Какая-То_Функция, то функция должна что-то вернуть и в описании самой функции указать асинх.

v0Hijm

Максим75,

все равно не асинхронно идет. да и смысл что-то возращать если задача заключается в реализации блокировки дополнительного потока

&НаКлиенте
асинх Процедура Команда1(Команда)
   ждать проц();
КонецПроцедуры

&НаКлиенте
асинх функция проц()
   пока истина цикл
   конеццикла; 
   возврат истина
конецфункции

LexaK

v0Hijm, да, в СП нет примера, вроде в инет есть
попробуйте, посмотрите эту статью
Статья Асинх
если помогло нажмите: Спасибо!

v0Hijm

К сожалению мне так и не удалось реализовать.
если кто-либо сможет написать функцию или процедуру с бесконечным циклом
которая не остановит выполнение программы, буду крайне благодарен 
:ehtwj:

v0Hijm


Похожие темы (5)

Рейтинг@Mail.ru

Поиск