Подтвердить что ты не робот

Windows Phone 8.1 сбой приложений, когда не отладка Async Await

Я работаю над приложением Windows Phone 8.1. Я около месяца в проекте и почти не вижу проблем с тем, что я написал до сих пор.

Я решил провести некоторое тестирование в приложении, не запуская его через отладчик VS 2013. Теперь по какой-то причине приложение выходит из строя, прежде чем оно попадает на первый экран. Я не получаю никаких исключений или сообщений (я использую Raygun для регистрации ошибок).

Я использую async-методы на протяжении всего (некоторые async void, другие async Task), но все это работает при отладке.

Главное, что поможет, - получить какое-то сообщение об ошибке. Я был сокращен до комментирования разделов кода, но в конечном итоге это ни к чему не приводит, потому что кажется, что, когда я думаю, что нашел проблему, я снова попал в код.

В какой-то момент я обнаружил проблему с вызовом: ListView.UpdateLayout(). Я прокомментировал это, и приложение будет нормально работать без сбоев. Затем я не прокомментировал некоторый код дальше, и теперь он снова сбой.

Если кто-то знает способ получить исключения из телефона или если кто-то испытал этот вопрос раньше, любая помощь будет принята с благодарностью. Я могу предоставить любую дополнительную информацию, которая необходима.

UPDATE: Я думаю, что я сузил проблему до Sqlite.NET. Я использую Sqlite.Net для WinRT вместе с расширением SqliteNetExtensions. Конкретное утверждение

    DataContext.Context.Connection.Table<Message>().Where(m => m.ChannelID == channelID && m.ChannelID.Contains("C")).ToList();

Если я прокомментирую это, приложение будет работать без проблем. Этот оператор LINQ максимально возвращает 100 записей. Я не думаю, что 100-разрядный оператор SELECT может привести к сбою приложения, но он кажется виновником. Любые идеи о том, как оптимизировать Sqlite.NET?

ОБНОВЛЕНИЕ 2: Наконец понял это! Это не был SQLite. Это был не мой код. Это был мой телефон. Я запускаю значок Nokia Lumia. Несколько недель назад я установил Rudy Huyn Lockscreen Beta. Это вызвало некоторые проблемы при его удалении, но это не было связано с моим приложением. Сегодня у меня был мой партнер по бизнесу, который установил мое приложение на своем телефоне, у него такой же модельный телефон. Приложение было примерно в 50 раз быстрее и не разбилось. Я восстановил свой телефон от factory и, вот и все, он работал отлично. Итак, про совет: НЕ УСТАНАВЛИВАЙТЕ БЛОКИРОВКУ БЕТКА РУДЫ ХУЙН!!!

4b9b3361

Ответ 1

В стороне, я бы потратил время, чтобы вы всегда избегали использования async void. Хорошо документировано, что асинхронная пустота часто является рецептом неприятностей.

Существует хорошая статья о недостатках, представленных здесь