我正在开发一个 Windows Phone 8.1 应用程序,进入了一个月左右,到目前为止,我写的部分代码几乎没有问题。
我决定在不通过 VS 2013 调试器运行应用程序的情况下进行一些测试。但是,出于某种原因,在第一个界面加载之前,应用程序就会崩溃。我没有收到任何异常或消息(我正在使用 Raygun 进行错误记录)。
我全程使用异步方法(有些是异步 void,有些是异步 Task),但在调试时所有这些方法都能正常工作。
最主要的帮助是得到一些错误信息。我已经被迫注释掉代码段,但最终我无法得到什么结果,因为似乎当我认为已经找到问题时,代码又在更深的位置崩溃了。
曾经有一次,我发现调用 ListView.UpdateLayout() 有问题。我将其注释掉,然后应用程序可以正常运行,没有出现崩溃。但是随后我取消了其他一些代码的注释,现在它又崩溃了。
如果有人知道如何从手机获取异常,或者遇到过这个问题,请给予帮助,我将不胜感激。我可以提供任何需要的其他信息。
更新:我认为我已经将问题缩小到 Sqlite.NET 上了。我正在使用 Sqlite.Net for WinRT 以及一个名为 SqliteNetExtensions 的扩展。具体语句如下:
DataContext.Context.Connection.Table<Message>().Where(m => m.ChannelID == channelID && m.ChannelID.Contains("C")).ToList();
如果我注释掉这个代码块,应用就没有问题。这个LINQ语句最多只返回100条记录。我不认为100条记录的选择语句会导致应用崩溃,但似乎是罪魁祸首。有什么优化Sqlite.NET的想法吗?更新2: 终于找到问题所在了!它与SQLite无关,也与我的代码无关,而是我的手机问题。我使用的是诺基亚Lumia Icon。几周前,我曾安装过Rudy Huyn的Lockscreen Beta。卸载时它引起了一些问题,但与我的应用程序无关。今天,我让我的合作伙伴在他的手机上安装我的应用程序,他有同样型号的手机。该应用程序运行速度提高了约50倍且未崩溃。我恢复出厂设置后,应用程序完美地运行了。所以,专业提示:不要安装Rudy Huyn的Lockscreen Beta!!!