2014-02-10 7 views
0

Что такое время/поток метода Application_Launching в WP8? В частности, что касается последовательности загрузки/воспроизведения UI?Application_Launching timing

У меня есть приложение, в котором выполняется некоторая глобальная инициализация в Application_Launching. Я получаю отчет о сбоях из метода, который вызывается во время привязки данных к XAML стартовой страницы; крах согласуется с тем, что глобальный init не имеет места.

EDIT: Я вызываю собственный (C++) метод, который считывает файл в malloc атакуемый блок памяти в глобальной переменной, инициализированной нулем. Указанная переменная сбрасывается как часть отчетов о сбоях; У меня есть отчет, где он равен нулю.

Вклеивание кода было бы совершенно бессмысленным ИМХО.

+0

Можете ли вы описать этот глобальный init, который вы делаете? Можете ли вы указать код –

ответ

1

При запуске приложения возникает событие Launching. Тем не менее, приложение может быть позже помещено в состояние покоя, в процессе, который называется «гробниц». Когда возобновляется надгробное приложение, оно не будет поднимать событие Launching, но вместо этого произойдет событие Activated. Очень вероятно, что вы забыли обработать этот случай.

Чтобы легко протестировать его, зайдите в свойства вашего проекта Windows Phone на вкладке «Отладка» и проверьте параметр «Надгробный камень при деактивации при отладке». Оттуда, каждый раз, когда приложение отключается, когда отладчик подключен (как правило, при нажатии кнопки «домой» на эмуляторе), приложение будет разбито над камнями, и вы можете убедиться, что оно возобновляется должным образом при возврате к нему.

+0

+1 Я согласен с тем, что, вероятно, OP скорее всего столкнется с этой проблемой, чем с синхронизацией. С другой стороны - эти случаи также должны быть проверены и обработаны. – Romasz

+0

Tombstoning не удаляет глобальное состояние, последний раз, когда я проверил. «Глобальный» в этом случае означает глобальные переменные в нативной подсистеме. –

+0

@SevaAlekseyev Ну, так или иначе, в эмуляторе всего пять минут, чтобы проверить в эмуляторе –

0

У меня есть другая теория. Речь идет не о загрузке библиотеки в неподходящее время, а о библиотеке , выгруженной. Поскольку почти все мои собственные функции являются статическими, а состояние является глобальным, активных активных объектов нет, а подсистема COM имеет нулевой номер ref для модуля. Согласно правилам COM, модули, подобные этому, являются честной игрой для разгрузки в любое время. При последующем вызове нативной функции библиотека перезагружается, но глобальное состояние отсутствует.

Из следующей версии, я буду держать один живой родной объект для жизни приложения. Посмотрим, вернется ли авария.