c# - Windows Phone 8.1 应用程序在不调试 Async Await 时崩溃

标签 c# windows windows-runtime async-await windows-phone-8.1

我正在开发 Windows Phone 8.1 应用程序。我已经进入该项目大约一个月了,到目前为止我所写的内容几乎没有发现任何问题。

我决定在不通过 VS 2013 调试器运行的情况下对该应用程序进行一些测试。现在,出于某种原因,应用程序在到达第一个屏幕之前就崩溃了。我没有收到任何异常或消息(我正在使用 Raygun 进行错误记录)。

我一直在使用异步方法(一些 async void,其他 async 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 条记录的 SELECT 语句会导致应用程序崩溃,但它似乎是罪魁祸首。关于如何优化 Sqlite.NET 有什么想法吗?

更新 2: 终于想通了!它根本不是 SQLite。这根本不是我的代码。那是我的电话。我正在运行诺基亚 Lumia Icon。几周前我安装了 Rudy Huyn 的 Lockscreen Beta。当我卸载它时它引起了一些问题,但它与我的应用程序无关。今天,我让我的商业伙伴在他的手机上安装了我的应用程序,他有相同型号的手机。该应用程序快了大约 50 倍,并且没有崩溃。我从工厂恢复了我的手机,你瞧,它运行完美。所以,专业提示:不要安装 RUDY HUYN 的锁屏测试版!!!

最佳答案

顺便说一句,我会花时间确保您始终避免使用 async void。有据可查的是,async void 通常会带来麻烦。

缺点有一篇很好的说明here

关于c# - Windows Phone 8.1 应用程序在不调试 Async Await 时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25693494/

相关文章:

c# - 使用不是来自 web.config 的 paypal SDK 和自定义配置

c++ - 解析文件路径的最佳方法是什么?

windows-8 - WinRT-XAML 中是否有 WrapPanel(不是 WrapGrid)控件?

windows-8 - 在后台任务中实例化 WriteableImage

c# - RDLC 报表直接打印到 POS 打印机时为什么报表会缩小

C# 并行 Foreach 重复方法

c# - xxx.exe : 0xC0000005: Access violation 中 0x782260ec 处的第一次异常

Python Pyinstaller ERRNO 22 无效参数

windows - 如何编写一个以 SYSTEM 权限运行的 Windows 8 软件?

c++ - native C++ 类和 WinRT 组件(ref 类)之间的自动映射?