Можно ли в бизнес-процессе асинхронно вызывать асинхронные методы?
Скажем, есть асинхронный метод в разделе Methods, ну или в пакете сервис с ними лежит. И надо это как-то вызвать внутри бизнес-процесса в блоке ScriptTask, но ведь, если я правильно понимаю, код внутри этого скрипт таска идёт в ScriptTask1Execute(), а тот в свою очередь синхронный и повлиять на это никак нельзя. Всё правильно или я что-то не так понимаю?
Нравится
Добрый день!
Рекомендую вам в БП вместо ScriptTask вызвать элементом подпроцесс, который будет фоновым и он выполнится в параллельном потоке.
В систетеме стоит использовать фоновые процессы и с процесса вызвать подпроцесс фоновый. Статьи про фоновые процессы, в которых есть примеры кода для реализации вашей задачи:
Anhelina,
Добрый день! Прочитал статьи, но что-то не совсем понял, как там с асинхронным кодом работать. Метод Run(), что находится внутри IBackgroundTask, ведь синхронный. Единственный способ, что я вижу, чтобы в нём был асинхронный код - это вызывать его синхронно, условно
public void Run(UsrActivityData data) { var task = DoSmthAsync(); task.Wait(); return task.Result; }
Я для решения своей задачи изначально планировал просто сделать отдельный класс с синхронными методами(которые будут вызываться из СкриптТаска), где точно так же, как на моём примере выше, будут вызываться нужные мне асинхронные. Но это в любом случае вызов аснхронного из синхронного, что плохо и что я пытаюсь понять, можно ли избежать. Здесь есть какое-то преимущество при использовании IBackgroundTask или я не так понял, как им пользоваться?