Асинхронный код в OnApplicationStart выполняется параллельно с другими потоками



  • В OnApplicationStart нужно сначала получить данные с сайта для дальнейшей работы потоков, но пока идет загрузка, начинают выполняться другие потоки. Пока использую костыль с глобальной переменной, которая укажет остальным потокам, что OnApplicationStart выполнился.



  • @blackhacker Спасибо что предупредили, тоже хотел в апликейшене спарсить, а это долго, а потом работать. Буду тоже мастырить костыль с глобальной переменной.



  • @blackhacker OnApplicationStart не может выполнятся паралельно с другими потоками, если это происходит так, то это большой баг, который нужно срочно фиксить.
    Прикрепите пожалуйста проект, на котором такое происходит.

    Вот мой, по логу видно, что все потоки будут ждать пока все действия в OnApplicationStart не будут выполнены.
    0_1489756245469_onappstart.xml



  • @support Если выполнять запрос (через http-клиент пробовал), то OnApplicationStart выполнится, не дожидаясь ответа от сервера (в OnApplicationStart должен был выполняться запрос, и данные помещаться в глобальную переменную, но другие потоки логировали об отсутствии данных в переменной. Сделал глобальную переменную ready, которая проверяется в других потоках, и идет ожидание, пока она не будет true). Сейчас постараюсь прикрепить проект, если все-таки понадобится. Готового нет, придется делать)



  • @blackhacker Опять же работает и так как вы описали.
    0_1489756746635_onappstart.xml



  • @support Дико извиняюсь, ошибся. В проекте стояло условие, если число из распарсенных данных (количество страниц) меньше текущей страницы, то выводит ошибку. Поэтому думал, что потоки выполнялись параллельно. Но была ошибка в парсинге, поэтому условие выполнялось неправильно.


Log in to reply
 

  • 2
  • 9
  • 3
  • 1
  • 3
  • 3
  • 38
  • 2