while (!IsStopped()) { // some code Sleep(100); }
Запустил простенький скрипт как службу.
Ну т.е. служба каждую секунду что-то считает.
Но со временем приходит Stack Overflow.
Как правильно сделать чтоб этого не было ?
Есть два режима управления памятью: очередь и стек.
Запустил простенький скрипт как службу.
Ну т.е. служба каждую секунду что-то считает.
Но со временем приходит Stack Overflow.
Как правильно сделать чтоб этого не было ?
Если правильно понимаю, то это получается, что функция каждый раз ныряет все глубже и глубже. Не завершая предыдущие вызовы самой себя. Бесконечная рекурсия... Поэтому и захватывает все больше и больше памяти
Запустил простенький скрипт как службу.
Ну т.е. служба каждую секунду что-то считает.
Но со временем приходит Stack Overflow.
Как правильно сделать чтоб этого не было ?
OnStart() { while(!_StopFlag) { //------------------- //initialization area ... ... ... //------------------- //main cycle while(!_StopFlag && TerminalInfoInteger(TERMINAL_CONNECTED)) { //some code Sleep(1000); } Sleep(3000); } }
Запустил простенький скрипт как службу.
Ну т.е. служба каждую секунду что-то считает.
Но со временем приходит Stack Overflow.
Как правильно сделать чтоб этого не было ?
Вообщем то все сделал, все работает, как я задумал.
Но есть одно НО:
В службах не работает OnTimer(). Приходится делать бесконечный цикл для постоянной работы.
Так же не работает OnchartEvent().
int OnStart(void) { while(true) { Sleep(1000); Print ("Test"); } return 0 ; }
Вот такой скрипт службы при остановке пишет Abnormal termination, что несколько напрягает.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Запустил простенький скрипт как службу.
Ну т.е. служба каждую секунду что-то считает.
Но со временем приходит Stack Overflow.
Как правильно сделать чтоб этого не было ?