Как сделать так, чтобы поток после Return не закрывался а продолжал работать ?



  • Проблема авторизации в системе по QR коду мне нужно сохранить cooki



  • @ediczr данная возможность нужна поток будет работать как сервер по циклу.



  • не ясно что за return.. нажатие энтера?
    чтобы сохранить куки - сохрани куки
    мало вводных
    сделай скрин



  • @oleg4ever alt text

    Поле данной операции поток закрывается и куки сохранить не возможно браузер "убивается".

    var Result = await Api.RunFunction("StartSettingsServer", {});

    Получаю QR код и авторизуются в системе а браузер уже закрыт, так как поток уже завершил операцию.



  • @ediczr said in Как сделать так, чтобы поток после Return не закрывался а продолжал работать ?:

    @oleg4ever

    Поле данной операции поток закрывается и куки сохранить не возможно браузер "убивается".

    var Result = await Api.RunFunction("StartSettingsServer", {});

    Получаю QR код и авторизуются в системе а браузер уже закрыт, так как поток уже завершил операцию.

    https://wiki.bablosoft.com/web-interface/#/callbasfunction?id=managing-thread-lifetime-manually



  • @Fox попробовал

    Task = Api.RunFunction("LongRunningFunction", {})   
    

    Не возвращает QR код



  • @ediczr said in Как сделать так, чтобы поток после Return не закрывался а продолжал работать ?:

    @Fox попробовал

    Task = Api.RunFunction("LongRunningFunction", {})   
    

    Не возвращает QR код

    а вы точно читали описание?

    f02edb6d-a43b-44f5-ba3d-e7b465992637-изображение.png



  • @ediczr получается, что возврат:

    //Проверка вернувшихся данных от операции в переменную Result.
    if(Result !=="Сервер запущин."){
      // Decode the String
      image = 'data:image/png;base64,' + Result;
      //Log(image);
    
      //Открытие модального окна для ввода QR-кода.
      ModalData('butStartStopServer');                
    
      //Подстановка кортинки QR-кода для запуска сервера.
      var img = document.getElementById('myImage');
      img.src = image;
     }else{
      Log(Result);
    }
    


  • @ediczr Result не успевает получить с сервера



  • @ediczr said in Как сделать так, чтобы поток после Return не закрывался а продолжал работать ?:

    @ediczr Result не успевает получить с сервера

    Вы к самому себе обращаетесь?



  • @Fox Вопрос по организации остановки потока после запуска:

    $('#butStartStopServer').click(async function(){
        Log("Starting task");
        //Получение переменной по id.
        var NameChat = document.getElementById("NameChat").value
        //Log(NameChat);
    
        //Выполнение запуска "Старт" кнопка.
        if(KeysHideButton==1){
            Log('Подготовка к запуску сервера');
            //Log(KeysHideButton);
            //Включение активности кнопки "Тест настроек" по id
            document.getElementById("OutputDataConfigurationTestSettings").className='ui submit button';              
            //Включение активности кнопки "Сохранить настройки" по id.
            document.getElementById("OutputDataConfigurationSaveSettings").className='ui button';
    
            //Set event handler
            Api.SetEventHandler(function(EventType, EventData) {
                //Process log event
                if (EventType == "log") {
                    //Obtain log text
                    var Text = EventData["text"]
                    //Output text to the browser console
                    Log(Text);
                }
            });             
    
            ////Run BAS function
            ///How to run function https://wiki.bablosoft.com/web-interface/#/callbasfunction
            var Result = await Thread.RunFunction("StartSettingsServer", {});
            //Log(Result);
    
            //Проверка вернувшихся данных от операции в переменную Result.
            if(Result !=="Сервер запущен."){
                // Decode the String
                image = 'data:image/png;base64,' + Result;
                //Log(image);
    
                //Открытие модального окна для ввода QR-кода.
                ModalData('butStartStopServerWhatsApp');                
    
                //Подстановка кортинки QR-кода для запуска сервера.
                var img = document.getElementById('myImage');
                img.src = image;
            }else{
                Log(Result);
            }
    
            /////Report about result
            Log("Task completed");
        }
    
        //Выполнение остановка "Стоп" кнопка.
        if(KeysHideButton==0){
            Log('Подготовка остановки сервера');
            //Log(KeysHideButton);
            //Отключение активности кнопки "Тест настроек" по id.
            document.getElementById("OutputDataConfigurationTestSettings").className='ui submit button disabled';              
            //Отключение активности кнопки "Сохранить настройки" по id.
            document.getElementById("OutputDataConfigurationSaveSettings").className='ui button disabled'; 
    
            ////Run BAS function
            ///How to run function https://wiki.bablosoft.com/web-interface/#/callbasfunction
            //var Result = await Thread.RunFunction("StopSettingsServer", {});
            //Log("Result: '" + Result + "'");
    
            //Wait for results and stop thread
            var Result = await Result
            Thread.StopThread()
    
            //First browser will be closed
            //Thread.StopThread()
    
        }                
    })


  • @ediczr said in Как сделать так, чтобы поток после Return не закрывался а продолжал работать ?:

    @Fox Вопрос по организации остановки потока после запуска:

    $('#butStartStopServer').click(async function(){
        Log("Starting task");
        //Получение переменной по id.
        var NameChat = document.getElementById("NameChat").value
        //Log(NameChat);
    
        //Выполнение запуска "Старт" кнопка.
        if(KeysHideButton==1){
            Log('Подготовка к запуску сервера');
            //Log(KeysHideButton);
            //Включение активности кнопки "Тест настроек" по id
            document.getElementById("OutputDataConfigurationTestSettings").className='ui submit button';              
            //Включение активности кнопки "Сохранить настройки" по id.
            document.getElementById("OutputDataConfigurationSaveSettings").className='ui button';
    
            //Set event handler
            Api.SetEventHandler(function(EventType, EventData) {
                //Process log event
                if (EventType == "log") {
                    //Obtain log text
                    var Text = EventData["text"]
                    //Output text to the browser console
                    Log(Text);
                }
            });             
    
            ////Run BAS function
            ///How to run function https://wiki.bablosoft.com/web-interface/#/callbasfunction
            var Result = await Thread.RunFunction("StartSettingsServer", {});
            //Log(Result);
    
            //Проверка вернувшихся данных от операции в переменную Result.
            if(Result !=="Сервер запущен."){
                // Decode the String
                image = 'data:image/png;base64,' + Result;
                //Log(image);
    
                //Открытие модального окна для ввода QR-кода.
                ModalData('butStartStopServerWhatsApp');                
    
                //Подстановка кортинки QR-кода для запуска сервера.
                var img = document.getElementById('myImage');
                img.src = image;
            }else{
                Log(Result);
            }
    
            /////Report about result
            Log("Task completed");
        }
    
        //Выполнение остановка "Стоп" кнопка.
        if(KeysHideButton==0){
            Log('Подготовка остановки сервера');
            //Log(KeysHideButton);
            //Отключение активности кнопки "Тест настроек" по id.
            document.getElementById("OutputDataConfigurationTestSettings").className='ui submit button disabled';              
            //Отключение активности кнопки "Сохранить настройки" по id.
            document.getElementById("OutputDataConfigurationSaveSettings").className='ui button disabled'; 
    
            ////Run BAS function
            ///How to run function https://wiki.bablosoft.com/web-interface/#/callbasfunction
            //var Result = await Thread.RunFunction("StopSettingsServer", {});
            //Log("Result: '" + Result + "'");
    
            //Wait for results and stop thread
            var Result = await Result
            Thread.StopThread()
    
            //First browser will be closed
            //Thread.StopThread()
    
        }                
    })
    

    И в чём вопрос? Зря вы выложили полный код обработчика, с кучей данных не относящихся к основной задаче. Переделывать ваш код за вас я не буду.



  • @Fox Вопрос в следующем:

    1. Кнопка старт запускает запускает сервер.
    var Result = await Thread.RunFunction("StartSettingsServer", {});
    
    1. Кнопка стоп останавливает сервер. (ранее запущенный сервер)
      "Это уже грубо другая кнопка".
    Thread.StopThread()
    


  • @ediczr said in Как сделать так, чтобы поток после Return не закрывался а продолжал работать ?:

    @Fox Вопрос в следующем:

    1. Кнопка старт запускает запускает сервер.
    var Result = await Thread.RunFunction("StartSettingsServer", {});
    
    1. Кнопка стоп останавливает сервер. (ранее запущенный сервер)
      "Это уже грубо другая кнопка".
    Thread.StopThread()
    

    Извините, я вас не понимаю. В вашем сообщении я не вижу вопроса



  • @Fox Если возможность узнать номера потока и убить его принудительно?



  • @ediczr said in Как сделать так, чтобы поток после Return не закрывался а продолжал работать ?:

    @Fox Если возможность узнать номера потока и убить его принудительно?

    Используйте метод Api.GetTasks()
    https://wiki.bablosoft.com/web-interface/#/callbasfunction?id=function-statistic

    Только как вы его сможете идентифицировать среди других потоков? Вам проще изначально сохранять эти данные в переменной вне обработчика в любом удобном виде (в зависимости от задачи разумеется). В таком случае вы сможете сделать с этим потоком что угодно и где угодно.


Log in to reply